]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
client: void sending mds request while holding cap reference 22354/head
authorYan, Zheng <zyan@redhat.com>
Fri, 1 Jun 2018 02:21:20 +0000 (10:21 +0800)
committerYan, Zheng <zyan@redhat.com>
Mon, 4 Jun 2018 01:50:03 +0000 (09:50 +0800)
commit5a1447e1d8e4147d216d7336b6c49d0dcbc81254
tree035407c9e97387db018de262082da729968cfc83
parent51c205873c41efbd0438680441fdff2be375a442
client: void sending mds request while holding cap reference

Client::_write() calls is_quota_bytes_approaching() while holding Fw
cap reference. The later function may send lookup_name request to mds.
This can cause deadlock (mds delays handling the lookup_name request
because subtree is freezing. The subtree stays in freezing state because
mds is revoking the Fw cap and client does not release it)

This patch isn't cherry-picked from master because quota implementation
has been changed in master (introduced quota realm).

Fixes: http://tracker.ceph.com/issues/24369
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
src/client/Client.cc
src/client/Client.h