提交 90738683 编写于 作者: T Tejun Heo 提交者: Jeff Garzik

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: NTejun Heo <htejun@gmail.com>
Signed-off-by: NJeff Garzik <jeff@garzik.org>
上级 94ff3d54
......@@ -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 ||
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册