]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.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:31:05 +0000 (17:31 +0800)
commitea699f93ac5a4f0ac97783769cb6b0aeda18105f
tree2ffe8b61b2a97a61cae449f5e4c266c793e6f8ea
parentdbe4d6fcd12d70a0d65766c0d6441090574d490d
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