ceph: fix ceph_get_caps() interruption
Commit 5c341ee328
("ceph: fix scheduler warning due to nested
blocking") causes infinite loop when process is interrupted. Fix it.
Signed-off-by: Yan, Zheng <zyan@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
49def18533
commit
6e09d0fb64
@ -2591,8 +2591,13 @@ int ceph_get_caps(struct ceph_inode_info *ci, int need, int want,
|
||||
add_wait_queue(&ci->i_cap_wq, &wait);
|
||||
|
||||
while (!try_get_cap_refs(ci, need, want, endoff,
|
||||
true, &_got, &err))
|
||||
true, &_got, &err)) {
|
||||
if (signal_pending(current)) {
|
||||
ret = -ERESTARTSYS;
|
||||
break;
|
||||
}
|
||||
wait_woken(&wait, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT);
|
||||
}
|
||||
|
||||
remove_wait_queue(&ci->i_cap_wq, &wait);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user