From 5cef6cad4b87a6252a25c102b0a19d6d205556fa Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 15 Sep 2017 22:53:20 -0400 Subject: [PATCH] osd/PG: make get_watchers public, hide locking Signed-off-by: Sage Weil --- src/osd/OSD.cc | 4 +--- src/osd/PG.h | 3 ++- src/osd/PrimaryLogPG.cc | 6 ++++-- src/osd/PrimaryLogPG.h | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index d9e6c2d4949c5..de97baf1a43fe 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2130,9 +2130,7 @@ will start to track new ops received afterwards."; list pg_watchers; PG *pg = it->second; - pg->lock(); - pg->get_watchers(pg_watchers); - pg->unlock(); + pg->get_watchers(&pg_watchers); watchers.splice(watchers.end(), pg_watchers); } } diff --git a/src/osd/PG.h b/src/osd/PG.h index 106ce6606a825..391061cccc89d 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -380,6 +380,8 @@ public: void handle_loaded(RecoveryCtx *rctx); void handle_query_state(Formatter *f); + virtual void get_watchers(std::list *ls) = 0; + virtual void do_request( OpRequestRef& op, ThreadPool::TPHandle &handle @@ -2677,7 +2679,6 @@ protected: virtual void on_flushed() = 0; virtual void on_shutdown() = 0; virtual void check_blacklisted_watchers() = 0; - virtual void get_watchers(std::list&) = 0; friend ostream& operator<<(ostream& out, const PG& pg); }; diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index 0fbdf7da080b3..c2ed9c4ce6b38 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -9452,13 +9452,15 @@ void PrimaryLogPG::cancel_log_updates() // ------------------------------------------------------- -void PrimaryLogPG::get_watchers(list &pg_watchers) +void PrimaryLogPG::get_watchers(list *ls) { + lock(); pair i; while (object_contexts.get_next(i.first, &i)) { ObjectContextRef obc(i.second); - get_obc_watchers(obc, pg_watchers); + get_obc_watchers(obc, *ls); } + unlock(); } void PrimaryLogPG::get_obc_watchers(ObjectContextRef obc, list &pg_watchers) diff --git a/src/osd/PrimaryLogPG.h b/src/osd/PrimaryLogPG.h index fbf459f78584b..5c95c34ff3340 100644 --- a/src/osd/PrimaryLogPG.h +++ b/src/osd/PrimaryLogPG.h @@ -956,7 +956,7 @@ protected: void populate_obc_watchers(ObjectContextRef obc); void check_blacklisted_obc_watchers(ObjectContextRef obc); void check_blacklisted_watchers() override; - void get_watchers(list &pg_watchers) override; + void get_watchers(list *ls) override; void get_obc_watchers(ObjectContextRef obc, list &pg_watchers); public: void handle_watch_timeout(WatchRef watch); -- 2.39.5