From: linux Date: Thu, 9 Nov 2017 14:55:08 +0000 (+0100) Subject: os/bluestore: avoid excessive ops in _txc_release_alloc X-Git-Tag: v13.0.1~242^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F18854%2Fhead;p=ceph.git os/bluestore: avoid excessive ops in _txc_release_alloc Signed-off-by: Igor Fedotov --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 1abe4683b360..fd6308195ff3 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -8327,17 +8327,11 @@ void BlueStore::_txc_finish(TransContext *txc) void BlueStore::_txc_release_alloc(TransContext *txc) { - interval_set bulk_release_extents; // it's expected we're called with lazy_release_lock already taken! - if (!cct->_conf->bluestore_debug_no_reuse_blocks) { + if (likely(!cct->_conf->bluestore_debug_no_reuse_blocks)) { dout(10) << __func__ << " " << txc << " " << txc->released << dendl; - // interval_set seems to be too costly for inserting things in - // bstore_kv_final. We could serialize in simpler format and perform - // the merge separately, maybe even in a dedicated thread. - bulk_release_extents.insert(txc->released); + alloc->release(txc->released); } - - alloc->release(bulk_release_extents); txc->allocated.clear(); txc->released.clear(); }