diff options
-rw-r--r-- | drivers/scsi/libata-eh.c | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/drivers/scsi/libata-eh.c b/drivers/scsi/libata-eh.c index 823385981a7a..126be36289a7 100644 --- a/drivers/scsi/libata-eh.c +++ b/drivers/scsi/libata-eh.c | |||
@@ -93,6 +93,31 @@ static int ata_ering_map(struct ata_ering *ering, | |||
93 | return rc; | 93 | return rc; |
94 | } | 94 | } |
95 | 95 | ||
96 | static void ata_eh_clear_action(struct ata_device *dev, | ||
97 | struct ata_eh_info *ehi, unsigned int action) | ||
98 | { | ||
99 | int i; | ||
100 | |||
101 | if (!dev) { | ||
102 | ehi->action &= ~action; | ||
103 | for (i = 0; i < ATA_MAX_DEVICES; i++) | ||
104 | ehi->dev_action[i] &= ~action; | ||
105 | } else { | ||
106 | /* doesn't make sense for port-wide EH actions */ | ||
107 | WARN_ON(!(action & ATA_EH_PERDEV_MASK)); | ||
108 | |||
109 | /* break ehi->action into ehi->dev_action */ | ||
110 | if (ehi->action & action) { | ||
111 | for (i = 0; i < ATA_MAX_DEVICES; i++) | ||
112 | ehi->dev_action[i] |= ehi->action & action; | ||
113 | ehi->action &= ~action; | ||
114 | } | ||
115 | |||
116 | /* turn off the specified per-dev action */ | ||
117 | ehi->dev_action[dev->devno] &= ~action; | ||
118 | } | ||
119 | } | ||
120 | |||
96 | /** | 121 | /** |
97 | * ata_scsi_timed_out - SCSI layer time out callback | 122 | * ata_scsi_timed_out - SCSI layer time out callback |
98 | * @cmd: timed out SCSI command | 123 | * @cmd: timed out SCSI command |
@@ -705,31 +730,6 @@ static void ata_eh_detach_dev(struct ata_device *dev) | |||
705 | spin_unlock_irqrestore(ap->lock, flags); | 730 | spin_unlock_irqrestore(ap->lock, flags); |
706 | } | 731 | } |
707 | 732 | ||
708 | static void ata_eh_clear_action(struct ata_device *dev, | ||
709 | struct ata_eh_info *ehi, unsigned int action) | ||
710 | { | ||
711 | int i; | ||
712 | |||
713 | if (!dev) { | ||
714 | ehi->action &= ~action; | ||
715 | for (i = 0; i < ATA_MAX_DEVICES; i++) | ||
716 | ehi->dev_action[i] &= ~action; | ||
717 | } else { | ||
718 | /* doesn't make sense for port-wide EH actions */ | ||
719 | WARN_ON(!(action & ATA_EH_PERDEV_MASK)); | ||
720 | |||
721 | /* break ehi->action into ehi->dev_action */ | ||
722 | if (ehi->action & action) { | ||
723 | for (i = 0; i < ATA_MAX_DEVICES; i++) | ||
724 | ehi->dev_action[i] |= ehi->action & action; | ||
725 | ehi->action &= ~action; | ||
726 | } | ||
727 | |||
728 | /* turn off the specified per-dev action */ | ||
729 | ehi->dev_action[dev->devno] &= ~action; | ||
730 | } | ||
731 | } | ||
732 | |||
733 | /** | 733 | /** |
734 | * ata_eh_about_to_do - about to perform eh_action | 734 | * ata_eh_about_to_do - about to perform eh_action |
735 | * @ap: target ATA port | 735 | * @ap: target ATA port |