]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: Make BitmapFreelistManager kv itereator short lived. 16243/head
authorMark Nelson <mnelson@redhat.com>
Mon, 10 Jul 2017 15:39:15 +0000 (10:39 -0500)
committerMark Nelson <mnelson@redhat.com>
Tue, 11 Jul 2017 23:31:16 +0000 (18:31 -0500)
Signed-off-by: Mark Nelson <mnelson@redhat.com>
src/os/bluestore/BitmapFreelistManager.cc
src/os/bluestore/BlueStore.cc

index a3b3a5ec8a5905e4170337c9b81856e64c248fb9..d3fdbb71a8da7942fdd03576227f23c69897971f 100644 (file)
@@ -183,6 +183,7 @@ void BitmapFreelistManager::enumerate_reset()
   enumerate_offset = 0;
   enumerate_bl_pos = 0;
   enumerate_bl.clear();
+  enumerate_p.reset();
 }
 
 int get_next_clear_bit(bufferlist& bl, int start)
index 7c9933c0213ff608022f257c138b95687dd91d84..681387cdac97bb4513b6277be4d7c9b3cf33c0fb 100644 (file)
@@ -4246,6 +4246,7 @@ int BlueStore::_open_alloc()
     ++num;
     bytes += length;
   }
+  fm->enumerate_reset();
   dout(1) << __func__ << " loaded " << pretty_si_t(bytes)
          << " in " << num << " extents"
          << dendl;
@@ -5963,6 +5964,7 @@ int BlueStore::fsck(bool deep)
        ++errors;
       }
     }
+    fm->enumerate_reset();
     size_t count = used_blocks.count();
     if (used_blocks.size() != count) {
       assert(used_blocks.size() > count);