From: David Sterba Date: Fri, 14 Nov 2014 14:05:06 +0000 (+0100) Subject: btrfs: fix wrong accounting of raid1 data profile in statfs X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f81e43e4902562a0485e96800bda34e1ffb566c7;p=linux 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 Fixes: ba7b6e62f420 ("btrfs: adjust statfs calculations according to raid profiles") CC: stable@vger.kernel.org Signed-off-by: David Sterba Signed-off-by: Chris Mason (cherry picked from commit 0d95c1bec906dd1ad951c9c001e798ca52baeb0f) --- diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index 96b0be67fad1..391ec4418460 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -1859,7 +1859,7 @@ static int btrfs_statfs(struct dentry *dentry, struct kstatfs *buf) buf->f_bfree -= block_rsv->size >> bits; spin_unlock(&block_rsv->lock); - buf->f_bavail = total_free_data; + buf->f_bavail = div_u64(total_free_data, factor); ret = btrfs_calc_avail_data_space(fs_info->tree_root, &total_free_data); if (ret) return ret;