]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
client: issue a cap release immediately if no cap exists
authorXiubo Li <xiubli@redhat.com>
Tue, 16 May 2023 01:18:15 +0000 (09:18 +0800)
committerXiubo Li <xiubli@redhat.com>
Wed, 23 Aug 2023 09:28:30 +0000 (17:28 +0800)
commit9507fad8d16278984c6e987c0fd0e1d456d61baf
tree952b36c5f26ea38677d057ca06d4925105db5271
parent57ae8604d9724c97215c5ff0148e5b2e972954e5
client: issue a cap release immediately if no cap exists

In case:

           mds                             client
                                - Releases cap and put Inode
  - Increase cap->seq and sends
    revokes req to the client
  - Receives release req and    - Receives & drops the revoke req
    skip removing the cap and
    then eval the CInode and
    issue or revoke caps again.
                                - Receives & drops the caps update
                                  or revoke req
  - Health warning for client
    isn't responding to
    mclientcaps(revoke)

All the IMPORT/REVOKE/GRANT cap ops will increase the session seq
in MDS side and then the client need to issue a cap release to
unblock MDS to remove the corresponding cap to unblock possible
waiters.

Fixes: https://tracker.ceph.com/issues/57244
Fixes: https://tracker.ceph.com/issues/61148
Signed-off-by: Xiubo Li <xiubli@redhat.com>
(cherry picked from commit 7aaf4ba81b978db63b9cb11a90f881196530e5d5)
src/client/Client.cc