aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2006-06-19 05:27:23 -0400
committerJeff Garzik <jeff@garzik.org>2006-06-22 23:36:58 -0400
commit47005f255ed126a4b48a1a2f63164fb1d83bcb0a (patch)
treebac4a73716af3d9cdb201f1bd83d65952fa2c988 /include/linux
parent3a778275626c0eb97674e92875efeba01189ce0e (diff)
[PATCH] libata: implement per-dev EH action mask eh_info->dev_action[]
Currently, the only per-dev EH action is REVALIDATE. EH used to exploit ehi->dev to do selective revalidation on a ATA bus. However, this is a bit hacky and makes it impossible to request selective revalidation from outside of EH or add another per-dev EH action. This patch adds per-dev EH action mask eh_info->dev_action[] and update EH to use this field for REVALIDATE. Note that per-dev actions can still be specified at port-level and it has the same effect of specifying the action for all devices on the port. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/libata.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h
index f03b8664af11..6b3c3af2c75f 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -249,6 +249,7 @@ enum {
249 ATA_EH_HARDRESET = (1 << 2), 249 ATA_EH_HARDRESET = (1 << 2),
250 250
251 ATA_EH_RESET_MASK = ATA_EH_SOFTRESET | ATA_EH_HARDRESET, 251 ATA_EH_RESET_MASK = ATA_EH_SOFTRESET | ATA_EH_HARDRESET,
252 ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE,
252 253
253 /* ata_eh_info->flags */ 254 /* ata_eh_info->flags */
254 ATA_EHI_HOTPLUGGED = (1 << 0), /* could have been hotplugged */ 255 ATA_EHI_HOTPLUGGED = (1 << 0), /* could have been hotplugged */
@@ -462,6 +463,7 @@ struct ata_eh_info {
462 u32 serror; /* SError from LLDD */ 463 u32 serror; /* SError from LLDD */
463 unsigned int err_mask; /* port-wide err_mask */ 464 unsigned int err_mask; /* port-wide err_mask */
464 unsigned int action; /* ATA_EH_* action mask */ 465 unsigned int action; /* ATA_EH_* action mask */
466 unsigned int dev_action[ATA_MAX_DEVICES]; /* dev EH action */
465 unsigned int flags; /* ATA_EHI_* flags */ 467 unsigned int flags; /* ATA_EHI_* flags */
466 468
467 unsigned long hotplug_timestamp; 469 unsigned long hotplug_timestamp;