From: Sage Weil Date: Tue, 6 Dec 2016 17:29:11 +0000 (-0500) Subject: os/bluestore: defer bluefs reclaimed extent release X-Git-Tag: v11.1.1~30^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=65ead28a5d7303e8989a8c71ff62ec5984e3623f;p=ceph.git os/bluestore: defer bluefs reclaimed extent release Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 312bfe42fae1..f268d1f7b1ac 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -3630,8 +3630,7 @@ int BlueStore::_balance_bluefs_freespace(vector *extents) assert(r >= 0); bluefs_extents.erase(offset, length); - - alloc->release(offset, length); + bluefs_extents_reclaiming.insert(offset, length); reclaim -= length; } @@ -6740,6 +6739,15 @@ void BlueStore::_kv_sync_thread() if (!bluefs_gift_extents.empty()) { _commit_bluefs_freespace(bluefs_gift_extents); } + for (auto p = bluefs_extents_reclaiming.begin(); + p != bluefs_extents_reclaiming.end(); + ++p) { + dout(20) << __func__ << " releasing old bluefs 0x" << std::hex + << p.get_start() << "~" << p.get_len() << std::dec + << dendl; + alloc->release(p.get_start(), p.get_len()); + } + bluefs_extents_reclaiming.clear(); } l.lock(); diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 0633bf7983d0..421f75e989b0 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -1512,6 +1512,7 @@ private: Throttle throttle_wal_ops, throttle_wal_bytes; ///< submit to wal complete interval_set bluefs_extents; ///< block extents owned by bluefs + interval_set bluefs_extents_reclaiming; ///< currently reclaiming std::mutex wal_lock; std::atomic wal_seq = {0};