diff options
Diffstat (limited to 'fs/adfs')
-rw-r--r-- | fs/adfs/super.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/fs/adfs/super.c b/fs/adfs/super.c index 7f83a46f2b7e..dd9becca4241 100644 --- a/fs/adfs/super.c +++ b/fs/adfs/super.c | |||
@@ -219,16 +219,20 @@ static int adfs_remount(struct super_block *sb, int *flags, char *data) | |||
219 | 219 | ||
220 | static int adfs_statfs(struct dentry *dentry, struct kstatfs *buf) | 220 | static int adfs_statfs(struct dentry *dentry, struct kstatfs *buf) |
221 | { | 221 | { |
222 | struct adfs_sb_info *asb = ADFS_SB(dentry->d_sb); | 222 | struct super_block *sb = dentry->d_sb; |
223 | struct adfs_sb_info *sbi = ADFS_SB(sb); | ||
224 | u64 id = huge_encode_dev(sb->s_bdev->bd_dev); | ||
223 | 225 | ||
224 | buf->f_type = ADFS_SUPER_MAGIC; | 226 | buf->f_type = ADFS_SUPER_MAGIC; |
225 | buf->f_namelen = asb->s_namelen; | 227 | buf->f_namelen = sbi->s_namelen; |
226 | buf->f_bsize = dentry->d_sb->s_blocksize; | 228 | buf->f_bsize = sb->s_blocksize; |
227 | buf->f_blocks = asb->s_size; | 229 | buf->f_blocks = sbi->s_size; |
228 | buf->f_files = asb->s_ids_per_zone * asb->s_map_size; | 230 | buf->f_files = sbi->s_ids_per_zone * sbi->s_map_size; |
229 | buf->f_bavail = | 231 | buf->f_bavail = |
230 | buf->f_bfree = adfs_map_free(dentry->d_sb); | 232 | buf->f_bfree = adfs_map_free(sb); |
231 | buf->f_ffree = (long)(buf->f_bfree * buf->f_files) / (long)buf->f_blocks; | 233 | buf->f_ffree = (long)(buf->f_bfree * buf->f_files) / (long)buf->f_blocks; |
234 | buf->f_fsid.val[0] = (u32)id; | ||
235 | buf->f_fsid.val[1] = (u32)(id >> 32); | ||
232 | 236 | ||
233 | return 0; | 237 | return 0; |
234 | } | 238 | } |