diff --git a/[refs] b/[refs] index 5fd710a260d4..9c0e9df10387 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9d03632e26e1a0a9e4a632cf426a7c0566768a7d +refs/heads/master: 32d48fa1af1fe066a6a4798e6f5a50ac6a3ce4a3 diff --git a/trunk/fs/btrfs/super.c b/trunk/fs/btrfs/super.c index 6446ab73f35a..55f4d00fda3a 100644 --- a/trunk/fs/btrfs/super.c +++ b/trunk/fs/btrfs/super.c @@ -503,6 +503,10 @@ static int btrfs_statfs(struct dentry *dentry, struct kstatfs *buf) on a big-endian or little-endian host */ buf->f_fsid.val[0] = be32_to_cpu(fsid[0]) ^ be32_to_cpu(fsid[2]); buf->f_fsid.val[1] = be32_to_cpu(fsid[1]) ^ be32_to_cpu(fsid[3]); + /* Mask in the root object ID too, to disambiguate subvols */ + buf->f_fsid.val[0] ^= BTRFS_I(dentry->d_inode)->root->objectid >> 32; + buf->f_fsid.val[1] ^= BTRFS_I(dentry->d_inode)->root->objectid; + return 0; }