]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore/BlueFS: fix a few leaks
authorSage Weil <sage@redhat.com>
Tue, 29 Dec 2015 18:21:34 +0000 (13:21 -0500)
committerSage Weil <sage@redhat.com>
Fri, 1 Jan 2016 18:08:56 +0000 (13:08 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/os/bluestore/BlueFS.cc
src/os/bluestore/BlueFS.h

index 600784df47e6497a404ce0b934ceb2c26d479c4c..3b4ce730578d45e5d2807556440567c7665f055d 100644 (file)
@@ -179,7 +179,7 @@ int BlueFS::mkfs(uuid_d osd_uuid)
   delete log_writer;
   log_writer = NULL;
   block_all.clear();
-  alloc.clear();
+  _stop_alloc();
 
   dout(10) << __func__ << " success" << dendl;
   return 0;
@@ -198,6 +198,15 @@ void BlueFS::_init_alloc()
   }
 }
 
+void BlueFS::_stop_alloc()
+{
+  dout(20) << __func__ << dendl;
+  for (auto p : alloc) {
+    delete p;
+  }
+  alloc.clear();
+}
+
 int BlueFS::mount()
 {
   dout(1) << __func__ << dendl;
@@ -246,11 +255,8 @@ void BlueFS::umount()
 
   delete log_writer;
   log_writer = NULL;
-  for (auto p : alloc) {
-    delete p;
-  }
-  alloc.clear();
   block_all.clear();
+  _stop_alloc();
   file_map.clear();
   for (auto& p : dir_map) {
     delete p.second;
index cbdefff3c00edeb2befdb38fe7d93bcf1f0247af..9d3382f00a0693e45ca72caf6805b672ae2d04b3 100644 (file)
@@ -28,7 +28,7 @@ public:
     atomic_t num_reading;
 
     File()
-      : RefCountedObject(0),
+      : RefCountedObject(NULL, 0),
        refs(0),
        dirty(false),
        locked(false),
@@ -38,6 +38,7 @@ public:
       assert(num_readers.read() == 0);
       assert(num_writers.read() == 0);
       assert(num_reading.read() == 0);
+      assert(!locked);
     }
 
     friend void intrusive_ptr_add_ref(File *f) {
@@ -182,6 +183,7 @@ private:
   vector<Allocator*> alloc;                   ///< allocators for bdevs
 
   void _init_alloc();
+  void _stop_alloc();
 
   void _pad_bl(bufferlist& bl);  ///< pad bufferlist to block size w/ zeros