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 /arch/mips | |
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 'arch/mips')
-rw-r--r-- | arch/mips/kernel/sysirix.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/arch/mips/kernel/sysirix.c b/arch/mips/kernel/sysirix.c index 5407b784cd01..19e1ef43eb4b 100644 --- a/arch/mips/kernel/sysirix.c +++ b/arch/mips/kernel/sysirix.c | |||
@@ -694,7 +694,7 @@ asmlinkage int irix_statfs(const char __user *path, | |||
694 | if (error) | 694 | if (error) |
695 | goto out; | 695 | goto out; |
696 | 696 | ||
697 | error = vfs_statfs(nd.dentry->d_inode->i_sb, &kbuf); | 697 | error = vfs_statfs(nd.dentry, &kbuf); |
698 | if (error) | 698 | if (error) |
699 | goto dput_and_out; | 699 | goto dput_and_out; |
700 | 700 | ||
@@ -732,7 +732,7 @@ asmlinkage int irix_fstatfs(unsigned int fd, struct irix_statfs __user *buf) | |||
732 | goto out; | 732 | goto out; |
733 | } | 733 | } |
734 | 734 | ||
735 | error = vfs_statfs(file->f_dentry->d_inode->i_sb, &kbuf); | 735 | error = vfs_statfs(file->f_dentry, &kbuf); |
736 | if (error) | 736 | if (error) |
737 | goto out_f; | 737 | goto out_f; |
738 | 738 | ||
@@ -1360,7 +1360,7 @@ asmlinkage int irix_statvfs(char __user *fname, struct irix_statvfs __user *buf) | |||
1360 | error = user_path_walk(fname, &nd); | 1360 | error = user_path_walk(fname, &nd); |
1361 | if (error) | 1361 | if (error) |
1362 | goto out; | 1362 | goto out; |
1363 | error = vfs_statfs(nd.dentry->d_inode->i_sb, &kbuf); | 1363 | error = vfs_statfs(nd.dentry, &kbuf); |
1364 | if (error) | 1364 | if (error) |
1365 | goto dput_and_out; | 1365 | goto dput_and_out; |
1366 | 1366 | ||
@@ -1406,7 +1406,7 @@ asmlinkage int irix_fstatvfs(int fd, struct irix_statvfs __user *buf) | |||
1406 | error = -EBADF; | 1406 | error = -EBADF; |
1407 | goto out; | 1407 | goto out; |
1408 | } | 1408 | } |
1409 | error = vfs_statfs(file->f_dentry->d_inode->i_sb, &kbuf); | 1409 | error = vfs_statfs(file->f_dentry, &kbuf); |
1410 | if (error) | 1410 | if (error) |
1411 | goto out_f; | 1411 | goto out_f; |
1412 | 1412 | ||
@@ -1611,7 +1611,7 @@ asmlinkage int irix_statvfs64(char __user *fname, struct irix_statvfs64 __user * | |||
1611 | error = user_path_walk(fname, &nd); | 1611 | error = user_path_walk(fname, &nd); |
1612 | if (error) | 1612 | if (error) |
1613 | goto out; | 1613 | goto out; |
1614 | error = vfs_statfs(nd.dentry->d_inode->i_sb, &kbuf); | 1614 | error = vfs_statfs(nd.dentry, &kbuf); |
1615 | if (error) | 1615 | if (error) |
1616 | goto dput_and_out; | 1616 | goto dput_and_out; |
1617 | 1617 | ||
@@ -1658,7 +1658,7 @@ asmlinkage int irix_fstatvfs64(int fd, struct irix_statvfs __user *buf) | |||
1658 | error = -EBADF; | 1658 | error = -EBADF; |
1659 | goto out; | 1659 | goto out; |
1660 | } | 1660 | } |
1661 | error = vfs_statfs(file->f_dentry->d_inode->i_sb, &kbuf); | 1661 | error = vfs_statfs(file->f_dentry, &kbuf); |
1662 | if (error) | 1662 | if (error) |
1663 | goto out_f; | 1663 | goto out_f; |
1664 | 1664 | ||