summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchentao.2022 <chentao.2022@bytedance.com>2024-08-05 17:38:50 +0200
committerchentao.2022 <chentao.2022@bytedance.com>2024-08-05 17:44:07 +0200
commit7f723017454957f3e4e1dbb4613bcf94afa4151e (patch)
tree148761711bc59391bf2157b60bc92fc27b675189
parentMerge pull request #58891 from zdover23/wip-doc-2024-07-28-cephfs-file-layout... (diff)
downloadceph-7f723017454957f3e4e1dbb4613bcf94afa4151e.tar.xz
ceph-7f723017454957f3e4e1dbb4613bcf94afa4151e.zip
cephfs: Fixed a bug that read operation hung in Client::get_caps when the Fc caps is wanted but revoked by the mds, and the Fc cap refs is no-zero
Fixes: https://tracker.ceph.com/issues/65971 Signed-off-by: Tod Chen <chentao.2022@bytedance.com>
-rw-r--r--src/client/Client.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/client/Client.cc b/src/client/Client.cc
index 7e6f950332b..fb822c9fe51 100644
--- a/src/client/Client.cc
+++ b/src/client/Client.cc
@@ -3620,6 +3620,9 @@ void Client::put_cap_ref(Inode *in, int cap)
if (last & CEPH_CAP_FILE_CACHE) {
ldout(cct, 5) << __func__ << " dropped last FILE_CACHE ref on " << *in << dendl;
++put_nref;
+
+ ldout(cct, 10) << __func__ << " calling signal_caps_inode" << dendl;
+ signal_caps_inode(in);
}
if (drop)
check_caps(in, 0);