Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=79a55b72a1996f77e9d23c7a5282e5839d45beb3
Commit:     79a55b72a1996f77e9d23c7a5282e5839d45beb3
Parent:     501e0c500217e38276d61445ee0839b3f2c66d05
Author:     Tejun Heo <[EMAIL PROTECTED]>
AuthorDate: Thu Jan 18 17:22:18 2007 +0900
Committer:  Jeff Garzik <[EMAIL PROTECTED]>
CommitDate: Fri Jan 19 19:22:45 2007 -0500

    libata: fix handling of port actions in per-dev action mask
    
    libata EH ignores port-wide actions in per-dev action mask.  However,
    device resume requests EH_SOFTRESET using per-dev action mask.  Under
    certain circumstances, this results in not resetting frozen port after
    resuming which causes failure of all commands.
    
    This patch allows port-wide actions to be requested in per-dev action
    mask.  Before EH recovery starts, port-wide actions will be collected.
    
    Signed-off-by: Tejun Heo <[EMAIL PROTECTED]>
    Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
---
 drivers/ata/libata-eh.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 08ad44b..56cf59b 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -1979,6 +1979,10 @@ static int ata_eh_recover(struct ata_port *ap, 
ata_prereset_fn_t prereset,
 
                ehc->tries[dev->devno] = ATA_EH_DEV_TRIES;
 
+               /* collect port action mask recorded in dev actions */
+               ehc->i.action |= ehc->i.dev_action[i] & ~ATA_EH_PERDEV_MASK;
+               ehc->i.dev_action[i] &= ATA_EH_PERDEV_MASK;
+
                /* process hotplug request */
                if (dev->flags & ATA_DFLAG_DETACH)
                        ata_eh_detach_dev(dev);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to