From: Sage Weil Date: Fri, 8 Jan 2016 21:11:02 +0000 (-0500) Subject: os/bluestore: fix allocation vs reservation for bluefs extents X-Git-Tag: v10.0.3~88^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F7130%2Fhead;p=ceph.git os/bluestore: fix allocation vs reservation for bluefs extents - drop the MIN cruft - unreserve what we didn't get Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 38fb369e5ce..b97d40b78f7 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);