Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90484ebf authored by Tejun Heo's avatar Tejun Heo Committed by Jeff Garzik
Browse files

libata: clear saved xfer_mode and ncq_enabled on device detach



libata EH saves xfer_mode and ncq_enabled at start to later set
DUBIOUS_XFER flag if it has changed.  These values need to be cleared
on device detach such that hot device swap doesn't accidentally miss
DUBIOUS_XFER.

Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent e8b3b5e9
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1164,6 +1164,7 @@ void ata_eh_detach_dev(struct ata_device *dev)
{
	struct ata_link *link = dev->link;
	struct ata_port *ap = link->ap;
	struct ata_eh_context *ehc = &link->eh_context;
	unsigned long flags;

	ata_dev_disable(dev);
@@ -1177,9 +1178,11 @@ void ata_eh_detach_dev(struct ata_device *dev)
		ap->pflags |= ATA_PFLAG_SCSI_HOTPLUG;
	}

	/* clear per-dev EH actions */
	/* clear per-dev EH info */
	ata_eh_clear_action(link, dev, &link->eh_info, ATA_EH_PERDEV_MASK);
	ata_eh_clear_action(link, dev, &link->eh_context.i, ATA_EH_PERDEV_MASK);
	ehc->saved_xfer_mode[dev->devno] = 0;
	ehc->saved_ncq_enabled &= ~(1 << dev->devno);

	spin_unlock_irqrestore(ap->lock, flags);
}