From 2ddcfbdf647d194e6c58f9f37d7a445493056cb4 Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Fri, 2 Aug 2019 13:29:38 -0700 Subject: [PATCH] mds: use const get_request_count So it can be used from a const dump method. Make the elist mutable instead. Signed-off-by: Patrick Donnelly --- src/mds/SessionMap.cc | 12 +++++------- src/mds/SessionMap.h | 7 +++++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/mds/SessionMap.cc b/src/mds/SessionMap.cc index d70599e40d0..925e9aa62ca 100644 --- a/src/mds/SessionMap.cc +++ b/src/mds/SessionMap.cc @@ -874,18 +874,16 @@ void SessionMap::save_if_dirty(const std::set &tgt_sessions, * Calculate the length of the `requests` member list, * because elist does not have a size() method. * - * O(N) runtime. This would be const, but elist doesn't - * have const iterators. + * O(N) runtime. */ -size_t Session::get_request_count() +size_t Session::get_request_count() const { size_t result = 0; - elist::iterator p = requests.begin( - member_offset(MDRequestImpl, item_session_request)); - while (!p.end()) { + auto it = requests.begin(member_offset(MDRequestImpl, item_session_request)); + while (!it.end()) { ++result; - ++p; + ++it; } return result; diff --git a/src/mds/SessionMap.h b/src/mds/SessionMap.h index 4d57f4b0c14..5c891dbf2e3 100644 --- a/src/mds/SessionMap.h +++ b/src/mds/SessionMap.h @@ -176,8 +176,11 @@ public: list> preopen_out_queue; ///< messages for client, queued before they connect - elist requests; - size_t get_request_count(); + /* This is mutable to allow get_request_count to be const. elist does not + * support const iterators yet. + */ + mutable elist requests; + size_t get_request_count() const; interval_set pending_prealloc_inos; // journaling prealloc, will be added to prealloc_inos -- 2.39.5