From a87470e1b411c8b91ef75123a4242ebeb6ff44be Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 8 Jan 2016 16:11:02 -0500 Subject: [PATCH] os/bluestore: fix allocation vs reservation for bluefs extents - drop the MIN cruft - unreserve what we didn't get Signed-off-by: Sage Weil --- src/os/bluestore/BlueStore.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 38fb369e5ce3..b97d40b78f7e 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -1430,12 +1430,14 @@ int BlueStore::_balance_bluefs_freespace(vector *extents) assert(r == 0); bluestore_extent_t e; - r = alloc->allocate(MIN(gift, 1ull<<31), min_alloc_size, 0, - &e.offset, &e.length); + r = alloc->allocate(gift, min_alloc_size, 0, &e.offset, &e.length); if (r < 0) { assert(0 == "allocate failed, wtf"); return r; } + if (e.length < gift) { + alloc->unreserve(gift - e.length); + } dout(1) << __func__ << " gifting " << e << " to bluefs" << dendl; extents->push_back(e); -- 2.47.3