From 09dffea8e902a49208567384b03cb51dc67f79eb Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 14 Jul 2009 13:46:10 -0700 Subject: [PATCH] mds: reset seq on mds after reconnect, too We were setting it to 1 (due to the issue_norevoke() call), but the client is resetting to 0, so do the same here. (Otherwise subsequent client cap messages may get ignored.) --- src/mds/CInode.cc | 3 ++- src/mds/CInode.h | 2 ++ src/mds/Capability.h | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index f183394a89521..ac7e3faa1a7e9 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -148,7 +148,8 @@ ostream& operator<<(ostream& out, CInode& in) it++) { if (it != in.get_client_caps().begin()) out << ","; out << it->first << "=" << ccap_string(it->second->issued()) - << "/" << ccap_string(it->second->wanted()); + << "/" << ccap_string(it->second->wanted()) + << "@" << it->second->get_last_sent(); } out << "}"; if (in.get_loner() >= 0) diff --git a/src/mds/CInode.h b/src/mds/CInode.h index c642604124f3b..a51070bcf0df3 100644 --- a/src/mds/CInode.h +++ b/src/mds/CInode.h @@ -670,11 +670,13 @@ public: Capability *reconnect_cap(int client, ceph_mds_cap_reconnect& icr, Session *session) { Capability *cap = get_client_cap(client); if (cap) { + // FIXME? cap->merge(icr.wanted, icr.issued); } else { cap = add_client_cap(client, session); cap->set_wanted(icr.wanted); cap->issue_norevoke(icr.issued); + cap->reset_seq(); } cap->set_cap_id(icr.cap_id); cap->set_last_issue_stamp(g_clock.recent_now()); diff --git a/src/mds/Capability.h b/src/mds/Capability.h index 88af4d8c3eb73..41f1daa8ee769 100644 --- a/src/mds/Capability.h +++ b/src/mds/Capability.h @@ -239,6 +239,10 @@ public: ceph_seq_t get_last_seq() { return last_sent; } ceph_seq_t get_last_issue() { return last_issue; } + void reset_seq() { + last_sent = 0; + last_issue = 0; + } // -- exports -- Export make_export() { -- 2.39.5