From: Jianpeng Ma Date: Mon, 16 May 2016 15:46:20 +0000 (+0800) Subject: os/bluestore/BlueStore: free space of bluestore should reduce spaces which allocate... X-Git-Tag: v11.0.0~476^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F9139%2Fhead;p=ceph.git os/bluestore/BlueStore: free space of bluestore should reduce spaces which allocate to bluefs. Signed-off-by: Jianpeng Ma --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 8d967735bb5e..442da1b5d556 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -2490,10 +2490,17 @@ void BlueStore::_sync() int BlueStore::statfs(struct statfs *buf) { memset(buf, 0, sizeof(*buf)); - buf->f_blocks = bdev->get_size() / bdev->get_block_size(); - buf->f_bsize = bdev->get_block_size(); - buf->f_bfree = alloc->get_free() / bdev->get_block_size(); + uint64_t block_size = bdev->get_block_size(); + uint64_t bluefs_len = 0; + for (interval_set::iterator p = bluefs_extents.begin(); + p != bluefs_extents.end(); p++) + bluefs_len += p.get_len(); + + buf->f_blocks = bdev->get_size() / block_size; + buf->f_bsize = block_size; + buf->f_bfree = (alloc->get_free() - bluefs_len) / block_size; buf->f_bavail = buf->f_bfree; + dout(20) << __func__ << " free " << pretty_si_t(buf->f_bfree * buf->f_bsize) << " / " << pretty_si_t(buf->f_blocks * buf->f_bsize) << dendl; return 0;