]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore/BlueStore: free space of bluestore should reduce spaces which allocate... 9139/head
authorJianpeng Ma <jianpeng.ma@intel.com>
Mon, 16 May 2016 15:46:20 +0000 (23:46 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Mon, 16 May 2016 15:46:20 +0000 (23:46 +0800)
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/os/bluestore/BlueStore.cc

index 8d967735bb5e251c805dcda21c8d7a18bfe2e6dc..442da1b5d55655d52b57a7c5e833cb867ef8d331 100644 (file)
@@ -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<uint64_t>::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;