From: Radoslaw Zarzynski Date: Tue, 5 Sep 2017 11:35:47 +0000 (+0200) Subject: os/bluestore: make the StupidAllocator aware about bulk releases. X-Git-Tag: v13.0.1~711^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cb0420ea0b343e7659807b33389ff2354a1319ed;p=ceph.git os/bluestore: make the StupidAllocator aware about bulk releases. Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/os/bluestore/StupidAllocator.cc b/src/os/bluestore/StupidAllocator.cc index bf681ef68e14..f422fc52c03b 100644 --- a/src/os/bluestore/StupidAllocator.cc +++ b/src/os/bluestore/StupidAllocator.cc @@ -251,6 +251,22 @@ void StupidAllocator::release( num_free += length; } +void StupidAllocator::release( + const interval_set& release_set) +{ + std::lock_guard l(lock); + for (interval_set::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 l(lock); diff --git a/src/os/bluestore/StupidAllocator.h b/src/os/bluestore/StupidAllocator.h index 431c636a6102..0b6780c9b16c 100644 --- a/src/os/bluestore/StupidAllocator.h +++ b/src/os/bluestore/StupidAllocator.h @@ -48,6 +48,8 @@ public: void release( uint64_t offset, uint64_t length) override; + void release( + const interval_set& release_set) override; uint64_t get_free() override;