diff options
author | Coly Li <coly.li@suse.de> | 2009-04-02 19:59:34 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-02 22:05:09 -0400 |
commit | 514c91a9cca12b19ed80ac6728278aff9bbf65f0 (patch) | |
tree | cf38741f31c6214b3d64013b3d3fe3c99882a468 /fs/efs/super.c | |
parent | 94ea77ac696d76522ad32a51e84a969f83284eda (diff) |
fs/efs: return f_fsid for statfs(2)
Make efs return f_fsid info for statfs(2), and do a little variable
renaming in efs_statfs().
Signed-off-by: Coly Li <coly.li@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/efs/super.c')
-rw-r--r-- | fs/efs/super.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/fs/efs/super.c b/fs/efs/super.c index 73b19cfc91fc..f04942810818 100644 --- a/fs/efs/super.c +++ b/fs/efs/super.c | |||
@@ -329,18 +329,22 @@ out_no_fs: | |||
329 | } | 329 | } |
330 | 330 | ||
331 | static int efs_statfs(struct dentry *dentry, struct kstatfs *buf) { | 331 | static int efs_statfs(struct dentry *dentry, struct kstatfs *buf) { |
332 | struct efs_sb_info *sb = SUPER_INFO(dentry->d_sb); | 332 | struct super_block *sb = dentry->d_sb; |
333 | struct efs_sb_info *sbi = SUPER_INFO(sb); | ||
334 | u64 id = huge_encode_dev(sb->s_bdev->bd_dev); | ||
333 | 335 | ||
334 | buf->f_type = EFS_SUPER_MAGIC; /* efs magic number */ | 336 | buf->f_type = EFS_SUPER_MAGIC; /* efs magic number */ |
335 | buf->f_bsize = EFS_BLOCKSIZE; /* blocksize */ | 337 | buf->f_bsize = EFS_BLOCKSIZE; /* blocksize */ |
336 | buf->f_blocks = sb->total_groups * /* total data blocks */ | 338 | buf->f_blocks = sbi->total_groups * /* total data blocks */ |
337 | (sb->group_size - sb->inode_blocks); | 339 | (sbi->group_size - sbi->inode_blocks); |
338 | buf->f_bfree = sb->data_free; /* free data blocks */ | 340 | buf->f_bfree = sbi->data_free; /* free data blocks */ |
339 | buf->f_bavail = sb->data_free; /* free blocks for non-root */ | 341 | buf->f_bavail = sbi->data_free; /* free blocks for non-root */ |
340 | buf->f_files = sb->total_groups * /* total inodes */ | 342 | buf->f_files = sbi->total_groups * /* total inodes */ |
341 | sb->inode_blocks * | 343 | sbi->inode_blocks * |
342 | (EFS_BLOCKSIZE / sizeof(struct efs_dinode)); | 344 | (EFS_BLOCKSIZE / sizeof(struct efs_dinode)); |
343 | buf->f_ffree = sb->inode_free; /* free inodes */ | 345 | buf->f_ffree = sbi->inode_free; /* free inodes */ |
346 | buf->f_fsid.val[0] = (u32)id; | ||
347 | buf->f_fsid.val[1] = (u32)(id >> 32); | ||
344 | buf->f_namelen = EFS_MAXNAMELEN; /* max filename length */ | 348 | buf->f_namelen = EFS_MAXNAMELEN; /* max filename length */ |
345 | 349 | ||
346 | return 0; | 350 | return 0; |