libata: wrap schedule_timeout_uninterruptible() in loop
Tasks in uninterruptible sleep might be woken up by unrelated events and should check whether the condition it was waiting for has actually triggered. Wrap schedule_timeout_uninterruptible() in loop to achieve it. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
94ff3d5408
commit
9073868376
|
@ -2183,7 +2183,8 @@ int ata_eh_reset(struct ata_link *link, int classify,
|
|||
"(errno=%d), retrying in %u secs\n",
|
||||
rc, (jiffies_to_msecs(delta) + 999) / 1000);
|
||||
|
||||
schedule_timeout_uninterruptible(delta);
|
||||
while (delta)
|
||||
delta = schedule_timeout_uninterruptible(delta);
|
||||
}
|
||||
|
||||
if (rc == -EPIPE ||
|
||||
|
|
Loading…
Reference in New Issue