diff options
author | David Howells <dhowells@redhat.com> | 2006-06-23 05:02:58 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-23 10:42:45 -0400 |
commit | 726c334223180e3c0197cc980a432681370d4baf (patch) | |
tree | 8327b354bb3dc959a6606051ae6f8d4d035e38a2 /include/linux/fs.h | |
parent | 454e2398be9b9fa30433fccc548db34d19aa9958 (diff) |
[PATCH] VFS: Permit filesystem to perform statfs with a known root dentry
Give the statfs superblock operation a dentry pointer rather than a superblock
pointer.
This complements the get_sb() patch. That reduced the significance of
sb->s_root, allowing NFS to place a fake root there. However, NFS does
require a dentry to use as a target for the statfs operation. This permits
the root in the vfsmount to be used instead.
linux/mount.h has been added where necessary to make allyesconfig build
successfully.
Interest has also been expressed for use with the FUSE and XFS filesystems.
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: Al Viro <viro@zeniv.linux.org.uk>
Cc: Nathan Scott <nathans@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux/fs.h')
-rw-r--r-- | include/linux/fs.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 3e50dd24af87..c823a3815e24 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -1096,7 +1096,7 @@ struct super_operations { | |||
1096 | int (*sync_fs)(struct super_block *sb, int wait); | 1096 | int (*sync_fs)(struct super_block *sb, int wait); |
1097 | void (*write_super_lockfs) (struct super_block *); | 1097 | void (*write_super_lockfs) (struct super_block *); |
1098 | void (*unlockfs) (struct super_block *); | 1098 | void (*unlockfs) (struct super_block *); |
1099 | int (*statfs) (struct super_block *, struct kstatfs *); | 1099 | int (*statfs) (struct dentry *, struct kstatfs *); |
1100 | int (*remount_fs) (struct super_block *, int *, char *); | 1100 | int (*remount_fs) (struct super_block *, int *, char *); |
1101 | void (*clear_inode) (struct inode *); | 1101 | void (*clear_inode) (struct inode *); |
1102 | void (*umount_begin) (struct super_block *); | 1102 | void (*umount_begin) (struct super_block *); |
@@ -1325,7 +1325,7 @@ extern struct vfsmount *copy_tree(struct vfsmount *, struct dentry *, int); | |||
1325 | extern void mnt_set_mountpoint(struct vfsmount *, struct dentry *, | 1325 | extern void mnt_set_mountpoint(struct vfsmount *, struct dentry *, |
1326 | struct vfsmount *); | 1326 | struct vfsmount *); |
1327 | 1327 | ||
1328 | extern int vfs_statfs(struct super_block *, struct kstatfs *); | 1328 | extern int vfs_statfs(struct dentry *, struct kstatfs *); |
1329 | 1329 | ||
1330 | /* /sys/fs */ | 1330 | /* /sys/fs */ |
1331 | extern struct subsystem fs_subsys; | 1331 | extern struct subsystem fs_subsys; |
@@ -1746,7 +1746,7 @@ extern int dcache_dir_close(struct inode *, struct file *); | |||
1746 | extern loff_t dcache_dir_lseek(struct file *, loff_t, int); | 1746 | extern loff_t dcache_dir_lseek(struct file *, loff_t, int); |
1747 | extern int dcache_readdir(struct file *, void *, filldir_t); | 1747 | extern int dcache_readdir(struct file *, void *, filldir_t); |
1748 | extern int simple_getattr(struct vfsmount *, struct dentry *, struct kstat *); | 1748 | extern int simple_getattr(struct vfsmount *, struct dentry *, struct kstat *); |
1749 | extern int simple_statfs(struct super_block *, struct kstatfs *); | 1749 | extern int simple_statfs(struct dentry *, struct kstatfs *); |
1750 | extern int simple_link(struct dentry *, struct inode *, struct dentry *); | 1750 | extern int simple_link(struct dentry *, struct inode *, struct dentry *); |
1751 | extern int simple_unlink(struct inode *, struct dentry *); | 1751 | extern int simple_unlink(struct inode *, struct dentry *); |
1752 | extern int simple_rmdir(struct inode *, struct dentry *); | 1752 | extern int simple_rmdir(struct inode *, struct dentry *); |