From 00d3bc192e461136771e2991794ea6a4bcd775f0 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Sun, 16 Aug 2020 12:33:04 +0800 Subject: [PATCH] mds: don't recover files after normal session close 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" (cherry picked from commit 91720cff1fee9e1a39e9deb4fc8e4f492c69bcd2) --- src/mds/Server.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 1cd049045e12..db1a81e5c1b6 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -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(); -- 2.47.3