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 | ||
