diff options
author | Yan, Zheng <zyan@redhat.com> | 2018-01-08 14:44:10 +0800 |
---|---|---|
committer | Ilya Dryomov <idryomov@gmail.com> | 2018-01-29 18:36:11 +0100 |
commit | 0f439c746c8cb370ce3ae1668182b18a5cb12b14 (patch) | |
tree | afea56c8ccc802f522dccf515e622329743a9610 /drivers/block | |
parent | ee612d954fe96612afaa966d8a67b736ba0c571e (diff) |
ceph: fix race of queuing delayed caps
When called with CHECK_CAPS_AUTHONLY flag, ceph_check_caps() only
processes auth caps. In that case, it's unsafe to remove inode
from mdsc->cap_delay_list, because there can be delayed non-auth
caps.
Besides, ceph_check_caps() may lock/unlock i_ceph_lock several
times, when multiple threads call ceph_check_caps() at the same
time. It's possible that one thread calls __cap_delay_requeue(),
another thread calls __cap_delay_cancel(). __cap_delay_cancel()
should be called at very beginning of ceph_check_caps(), so that
it does not race with __cap_delay_requeue().
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'drivers/block')
0 files changed, 0 insertions, 0 deletions