]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: don't recover files after normal session close 37178/head
authorYan, Zheng <zyan@redhat.com>
Sun, 16 Aug 2020 04:33:04 +0000 (12:33 +0800)
committerPatrick Donnelly <pdonnell@redhat.com>
Wed, 16 Sep 2020 03:29:19 +0000 (20:29 -0700)
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 1cd049045e1238e475f512eb40a0e968bf8f5de0..db1a81e5c1b6209550ab1d9720de82e974565f20 100644 (file)
@@ -744,11 +744,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();