aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/super.c
diff options
context:
space:
mode:
authorDavid Sterba <dsterba@suse.cz>2014-11-14 09:05:06 -0500
committerChris Mason <clm@fb.com>2014-11-20 20:20:09 -0500
commit0d95c1bec906dd1ad951c9c001e798ca52baeb0f (patch)
tree2b56d45ddd4c375db430ba7406148f97a5453f20 /fs/btrfs/super.c
parent321592427c0146126aadfab8a9b663de1875c9f4 (diff)
btrfs: fix wrong accounting of raid1 data profile in statfs
The sizes that are obtained from space infos are in raw units and have to be adjusted according to the raid factor. This was missing for f_bavail and df reported doubled size for raid1. Reported-by: Martin Steigerwald <Martin@lichtvoll.de> Fixes: ba7b6e62f420 ("btrfs: adjust statfs calculations according to raid profiles") CC: stable@vger.kernel.org Signed-off-by: David Sterba <dsterba@suse.cz> Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs/super.c')
-rw-r--r--fs/btrfs/super.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c
index dc337d14ef5c..21c60ee2f664 100644
--- a/fs/btrfs/super.c
+++ b/fs/btrfs/super.c
@@ -1851,7 +1851,7 @@ static int btrfs_statfs(struct dentry *dentry, struct kstatfs *buf)
1851 buf->f_bfree -= block_rsv->size >> bits; 1851 buf->f_bfree -= block_rsv->size >> bits;
1852 spin_unlock(&block_rsv->lock); 1852 spin_unlock(&block_rsv->lock);
1853 1853
1854 buf->f_bavail = total_free_data; 1854 buf->f_bavail = div_u64(total_free_data, factor);
1855 ret = btrfs_calc_avail_data_space(fs_info->tree_root, &total_free_data); 1855 ret = btrfs_calc_avail_data_space(fs_info->tree_root, &total_free_data);
1856 if (ret) 1856 if (ret)
1857 return ret; 1857 return ret;