diff options
Diffstat (limited to 'drivers/ata/libata-eh.c')
-rw-r--r-- | drivers/ata/libata-eh.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index a6a3b1554c45..8077bdf5d30d 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c | |||
@@ -1164,6 +1164,7 @@ void ata_eh_detach_dev(struct ata_device *dev) | |||
1164 | { | 1164 | { |
1165 | struct ata_link *link = dev->link; | 1165 | struct ata_link *link = dev->link; |
1166 | struct ata_port *ap = link->ap; | 1166 | struct ata_port *ap = link->ap; |
1167 | struct ata_eh_context *ehc = &link->eh_context; | ||
1167 | unsigned long flags; | 1168 | unsigned long flags; |
1168 | 1169 | ||
1169 | ata_dev_disable(dev); | 1170 | ata_dev_disable(dev); |
@@ -1177,9 +1178,11 @@ void ata_eh_detach_dev(struct ata_device *dev) | |||
1177 | ap->pflags |= ATA_PFLAG_SCSI_HOTPLUG; | 1178 | ap->pflags |= ATA_PFLAG_SCSI_HOTPLUG; |
1178 | } | 1179 | } |
1179 | 1180 | ||
1180 | /* clear per-dev EH actions */ | 1181 | /* clear per-dev EH info */ |
1181 | ata_eh_clear_action(link, dev, &link->eh_info, ATA_EH_PERDEV_MASK); | 1182 | ata_eh_clear_action(link, dev, &link->eh_info, ATA_EH_PERDEV_MASK); |
1182 | ata_eh_clear_action(link, dev, &link->eh_context.i, ATA_EH_PERDEV_MASK); | 1183 | ata_eh_clear_action(link, dev, &link->eh_context.i, ATA_EH_PERDEV_MASK); |
1184 | ehc->saved_xfer_mode[dev->devno] = 0; | ||
1185 | ehc->saved_ncq_enabled &= ~(1 << dev->devno); | ||
1183 | 1186 | ||
1184 | spin_unlock_irqrestore(ap->lock, flags); | 1187 | spin_unlock_irqrestore(ap->lock, flags); |
1185 | } | 1188 | } |