]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: make the StupidAllocator aware about bulk releases.
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 5 Sep 2017 11:35:47 +0000 (13:35 +0200)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Fri, 29 Sep 2017 15:09:29 +0000 (17:09 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/os/bluestore/StupidAllocator.cc
src/os/bluestore/StupidAllocator.h

index bf681ef68e14a848b953dbbb2a46401d0d1440ce..f422fc52c03bf1df454041646038a4bd0ebfd24b 100644 (file)
@@ -251,6 +251,22 @@ void StupidAllocator::release(
   num_free += length;
 }
 
+void StupidAllocator::release(
+  const interval_set<uint64_t>& release_set)
+{
+  std::lock_guard<std::mutex> l(lock);
+  for (interval_set<uint64_t>::const_iterator p = release_set.begin();
+       p != release_set.end();
+       ++p) {
+    const auto offset = p.get_start();
+    const auto length = p.get_len();
+    ldout(cct, 10) << __func__ << " 0x" << std::hex << offset << "~" << length
+                  << std::dec << dendl;
+    _insert_free(offset, length);
+    num_free += length;
+  }
+}
+
 uint64_t StupidAllocator::get_free()
 {
   std::lock_guard<std::mutex> l(lock);
index 431c636a61022a82eca8b88143ff12d39e4e53ca..0b6780c9b16c4eb5c5a860f152b5a9190b7670ab 100644 (file)
@@ -48,6 +48,8 @@ public:
 
   void release(
     uint64_t offset, uint64_t length) override;
+  void release(
+    const interval_set<uint64_t>& release_set) override;
 
   uint64_t get_free() override;