From e668620df594f2ade89ab7ad0baefec05e861765 Mon Sep 17 00:00:00 2001 From: Jianpeng Ma Date: Mon, 16 May 2016 23:46:20 +0800 Subject: [PATCH] os/bluestore/BlueStore: free space of bluestore should reduce spaces which allocate to bluefs. Signed-off-by: Jianpeng Ma --- src/os/bluestore/BlueStore.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) 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; -- 2.47.3