]> 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)
committerIgor Fedotov <ifedotov@suse.com>
Thu, 14 Mar 2019 16:13:24 +0000 (19:13 +0300)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
(cherry picked from commit cb0420ea0b343e7659807b33389ff2354a1319ed)

src/os/bluestore/StupidAllocator.cc
src/os/bluestore/StupidAllocator.h

index 65d7baf59d8b1b31cfdbc5d05af9f6f3367c6dc5..6aa527fe953860db2fc8314574d156118c9cf579 100644 (file)
@@ -250,6 +250,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 bcce0823216442e9c72eba04a738e26c6cbe03a3..d432868b38a775601262ebb6c43e6dc111c621df 100644 (file)
@@ -51,6 +51,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;