]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/ReplicatedPG: drop repop refs in ~SnapTrimmer
authorSage Weil <sage@inktank.com>
Tue, 23 Jul 2013 00:19:31 +0000 (17:19 -0700)
committerSage Weil <sage@inktank.com>
Tue, 23 Jul 2013 00:19:31 +0000 (17:19 -0700)
This fixes a leak on shutdown.

Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Samuel Just <sam.just@inktank.com>
src/osd/ReplicatedPG.cc
src/osd/ReplicatedPG.h

index 9c8d42dbf3c67d7d79388c54a9b60e7044fb4393..298d38d6ace647c631ce8af1a00a3125e5b08cc0 100644 (file)
@@ -7767,6 +7767,14 @@ void ReplicatedPG::_scrub_finish()
 #undef dout_prefix
 #define dout_prefix *_dout << pg->gen_prefix() 
 
+ReplicatedPG::SnapTrimmer::~SnapTrimmer()
+{
+  while (!repops.empty()) {
+    (*repops.begin())->put();
+    repops.erase(repops.begin());
+  }
+}
+
 void ReplicatedPG::SnapTrimmer::log_enter(const char *state_name)
 {
   dout(20) << "enter " << state_name << dendl;
index 0d4867f6e6dedd41b4aa63080048ed79a2e40baa..9dafe23faa1fb91b1403e7fb2c3280c60837a430 100644 (file)
@@ -982,6 +982,7 @@ private:
     bool need_share_pg_info;
     bool requeue;
     SnapTrimmer(ReplicatedPG *pg) : pg(pg), need_share_pg_info(false), requeue(false) {}
+    ~SnapTrimmer();
     void log_enter(const char *state_name);
     void log_exit(const char *state_name, utime_t duration);
   } snap_trimmer_machine;