diff options
| author | Tejun Heo <htejun@gmail.com> | 2006-06-19 05:27:23 -0400 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-06-22 23:36:58 -0400 |
| commit | 47005f255ed126a4b48a1a2f63164fb1d83bcb0a (patch) | |
| tree | bac4a73716af3d9cdb201f1bd83d65952fa2c988 /include | |
| parent | 3a778275626c0eb97674e92875efeba01189ce0e (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')
| -rw-r--r-- | include/linux/libata.h | 2 |
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; |
