From 79b3703b56e2cbaba9796e1a2a668cde4ea25c03 Mon Sep 17 00:00:00 2001 From: Xiubo Li Date: Fri, 5 Aug 2022 12:33:03 +0800 Subject: [PATCH] ceph: wake up the waiters if any new caps comes When new caps comes we need to wake up the waiters and also when revoking the caps, there also could be new caps comes. https://tracker.ceph.com/issues/54044 Signed-off-by: Xiubo Li --- fs/ceph/caps.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index 5a4e7e53015af..139d21b8fb498 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -755,6 +755,7 @@ void ceph_add_cap(struct inode *inode, cap->issue_seq = seq; cap->mseq = mseq; cap->cap_gen = gen; + wake_up_all(&ci->i_cap_wq); } /* @@ -3601,6 +3602,9 @@ static void handle_cap_grant(struct inode *inode, check_caps = 1; /* check auth cap only */ else check_caps = 2; /* check all caps */ + /* If there is new caps, try to wake up the waiters */ + if (~cap->issued & newcaps) + wake = true; cap->issued = newcaps; cap->implemented |= newcaps; } else if (cap->issued == newcaps) { -- 2.39.5