]> git-server-git.apps.pok.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>
Fri, 13 Oct 2023 00:38:37 +0000 (08:38 +0800)
commit8562548b19132b125483b68b3fb74250e6641ee9
treed18f96a5b2a7b928290239b9a74d1e43b1909546
parent980ae9021a7308641a6276d4e24c557808782a75
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