From b02d01f0be6f38ae8eede14cf0aa41d519671cc4 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 1 Jan 2008 14:02:37 -0800 Subject: [PATCH] sessionmap encode/decode --- src/mds/SessionMap.cc | 17 ++++++++++------- src/mds/SessionMap.h | 17 +++++++++++++++-- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/mds/SessionMap.cc b/src/mds/SessionMap.cc index 6876fb5052044..ae8e08754dcd3 100644 --- a/src/mds/SessionMap.cc +++ b/src/mds/SessionMap.cc @@ -60,11 +60,12 @@ void SessionMap::load(Context *onload) void SessionMap::_load_finish(bufferlist &bl) { - decode(bl); + bufferlist::iterator blp = bl.begin(); + decode(blp); dout(10) << "_load_finish v " << version - << ", " << session_map.size() << " sessions, " - << bl.length() << " bytes" - << dendl; + << ", " << session_map.size() << " sessions, " + << bl.length() << " bytes" + << dendl; projected = committing = committed = version; finish_contexts(waiting_for_load); } @@ -120,10 +121,12 @@ void SessionMap::_save_finish(version_t v) void SessionMap::encode(bufferlist& bl) { - + ::_encode_simple(version, bl); + ::_encode_complex(session_map, bl); } -void SessionMap::decode(bufferlist& bl) +void SessionMap::decode(bufferlist::iterator& p) { - + ::_decode_simple(version, p); + ::_decode_complex(session_map, p); } diff --git a/src/mds/SessionMap.h b/src/mds/SessionMap.h index 43ea543037b6d..14dedc883c638 100644 --- a/src/mds/SessionMap.h +++ b/src/mds/SessionMap.h @@ -65,7 +65,7 @@ public: } void trim_completed_requests(tid_t mintid) { // trim - while (completed_requests.empty() && + while (!completed_requests.empty() && (mintid == 0 || *completed_requests.begin() < mintid)) completed_requests.erase(completed_requests.begin()); @@ -89,8 +89,21 @@ public: Session() : state(STATE_UNDEF), cap_push_seq(0) { } + + void _encode(bufferlist& bl) const { + ::_encode_simple(inst, bl); + ::_encode_simple(cap_push_seq, bl); + ::_encode_simple(completed_requests, bl); + } + void _decode(bufferlist::iterator& p) { + ::_decode_simple(inst, p); + ::_decode_simple(cap_push_seq, p); + ::_decode_simple(completed_requests, p); + } }; + + class SessionMap { private: MDS *mds; @@ -182,7 +195,7 @@ public: list waiting_for_load; void encode(bufferlist& bl); - void decode(bufferlist& bl); + void decode(bufferlist::iterator& blp); void init_inode(); void load(Context *onload); -- 2.39.5