diff options
author | Miklos Szeredi <mszeredi@suse.cz> | 2008-02-08 07:21:43 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-08 12:22:40 -0500 |
commit | dd2cc4dff3b08ab54c4c177a080046bcc84ac41d (patch) | |
tree | 251643860af975f96701685729cfdec03a8b5ad5 /fs/hostfs | |
parent | d1875dbaa58e4894f7d9321d1c280fb23ca9f9e5 (diff) |
mount options: fix hostfs
Add the "host path" option to /proc/mounts for UML hostfs filesystems.
The mount source (mnt_devname) should really be used for this, but not
easy to change now in a backward compatible way.
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Cc: Jeff Dike <jdike@addtoit.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/hostfs')
-rw-r--r-- | fs/hostfs/hostfs_kern.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/hostfs/hostfs_kern.c b/fs/hostfs/hostfs_kern.c index 2b9b35733aac..d0549cb4fb23 100644 --- a/fs/hostfs/hostfs_kern.c +++ b/fs/hostfs/hostfs_kern.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/mm.h> | 11 | #include <linux/mm.h> |
12 | #include <linux/pagemap.h> | 12 | #include <linux/pagemap.h> |
13 | #include <linux/statfs.h> | 13 | #include <linux/statfs.h> |
14 | #include <linux/seq_file.h> | ||
14 | #include "hostfs.h" | 15 | #include "hostfs.h" |
15 | #include "init.h" | 16 | #include "init.h" |
16 | #include "kern.h" | 17 | #include "kern.h" |
@@ -322,12 +323,25 @@ static void hostfs_destroy_inode(struct inode *inode) | |||
322 | kfree(HOSTFS_I(inode)); | 323 | kfree(HOSTFS_I(inode)); |
323 | } | 324 | } |
324 | 325 | ||
326 | static int hostfs_show_options(struct seq_file *seq, struct vfsmount *vfs) | ||
327 | { | ||
328 | struct inode *root = vfs->mnt_sb->s_root->d_inode; | ||
329 | const char *root_path = HOSTFS_I(root)->host_filename; | ||
330 | size_t offset = strlen(root_ino) + 1; | ||
331 | |||
332 | if (strlen(root_path) > offset) | ||
333 | seq_printf(seq, ",%s", root_path + offset); | ||
334 | |||
335 | return 0; | ||
336 | } | ||
337 | |||
325 | static const struct super_operations hostfs_sbops = { | 338 | static const struct super_operations hostfs_sbops = { |
326 | .alloc_inode = hostfs_alloc_inode, | 339 | .alloc_inode = hostfs_alloc_inode, |
327 | .drop_inode = generic_delete_inode, | 340 | .drop_inode = generic_delete_inode, |
328 | .delete_inode = hostfs_delete_inode, | 341 | .delete_inode = hostfs_delete_inode, |
329 | .destroy_inode = hostfs_destroy_inode, | 342 | .destroy_inode = hostfs_destroy_inode, |
330 | .statfs = hostfs_statfs, | 343 | .statfs = hostfs_statfs, |
344 | .show_options = hostfs_show_options, | ||
331 | }; | 345 | }; |
332 | 346 | ||
333 | int hostfs_readdir(struct file *file, void *ent, filldir_t filldir) | 347 | int hostfs_readdir(struct file *file, void *ent, filldir_t filldir) |