]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: don't recover files after normal session close 37334/head
authorYan, Zheng <zyan@redhat.com>
Sun, 16 Aug 2020 04:33:04 +0000 (12:33 +0800)
committerNathan Cutler <ncutler@suse.com>
Wed, 23 Sep 2020 11:10:27 +0000 (13:10 +0200)
when closing a session, client does not flush cap releases, but client
should have flushed all dirty caps.

Fixes: https://tracker.ceph.com/issues/46984
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
(cherry picked from commit 91720cff1fee9e1a39e9deb4fc8e4f492c69bcd2)

src/mds/Server.cc

index d636646807d850628dc152cb98203c1995fadecf..06b3a2794ccd4d6af3cd549361c8c49cba26b9db 100644 (file)
@@ -799,11 +799,12 @@ void Server::_session_logged(Session *session, uint64_t state_seq, bool open, ve
   } else if (session->is_closing() ||
             session->is_killing()) {
     // kill any lingering capabilities, leases, requests
+    bool killing = session->is_killing();
     while (!session->caps.empty()) {
       Capability *cap = session->caps.front();
       CInode *in = cap->get_inode();
       dout(20) << " killing capability " << ccap_string(cap->issued()) << " on " << *in << dendl;
-      mds->locker->remove_client_cap(in, cap, true);
+      mds->locker->remove_client_cap(in, cap, killing);
     }
     while (!session->leases.empty()) {
       ClientLease *r = session->leases.front();