diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-16 22:09:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-16 22:09:57 -0400 |
commit | 054cfaacf88865bff1dd58d305443d5d6c068a08 (patch) | |
tree | 39cd85f0f5966ed8c501740359b1d03d48f5ea41 /fs/namespace.c | |
parent | dc113c1f1d4b47af1b1ca701c5a39e24d296c2ac (diff) | |
parent | 1a102ff92579edeff5e3d5d3c76ca49977898f00 (diff) |
Merge branch 'mnt_devname' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'mnt_devname' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
vfs: bury ->get_sb()
nfs: switch NFS from ->get_sb() to ->mount()
nfs: stop mangling ->mnt_devname on NFS
vfs: new superblock methods to override /proc/*/mount{s,info}
nfs: nfs_do_{ref,sub}mount() superblock argument is redundant
nfs: make nfs_path() work without vfsmount
nfs: store devname at disconnected NFS roots
nfs: propagate devname to nfs{,4}_get_root()
Diffstat (limited to 'fs/namespace.c')
-rw-r--r-- | fs/namespace.c | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index e96e03782def..d7513485c1f3 100644 --- a/fs/namespace.c +++ b/fs/namespace.c | |||
@@ -978,7 +978,13 @@ static int show_vfsmnt(struct seq_file *m, void *v) | |||
978 | int err = 0; | 978 | int err = 0; |
979 | struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt }; | 979 | struct path mnt_path = { .dentry = mnt->mnt_root, .mnt = mnt }; |
980 | 980 | ||
981 | mangle(m, mnt->mnt_devname ? mnt->mnt_devname : "none"); | 981 | if (mnt->mnt_sb->s_op->show_devname) { |
982 | err = mnt->mnt_sb->s_op->show_devname(m, mnt); | ||
983 | if (err) | ||
984 | goto out; | ||
985 | } else { | ||
986 | mangle(m, mnt->mnt_devname ? mnt->mnt_devname : "none"); | ||
987 | } | ||
982 | seq_putc(m, ' '); | 988 | seq_putc(m, ' '); |
983 | seq_path(m, &mnt_path, " \t\n\\"); | 989 | seq_path(m, &mnt_path, " \t\n\\"); |
984 | seq_putc(m, ' '); | 990 | seq_putc(m, ' '); |
@@ -1025,7 +1031,12 @@ static int show_mountinfo(struct seq_file *m, void *v) | |||
1025 | 1031 | ||
1026 | seq_printf(m, "%i %i %u:%u ", mnt->mnt_id, mnt->mnt_parent->mnt_id, | 1032 | seq_printf(m, "%i %i %u:%u ", mnt->mnt_id, mnt->mnt_parent->mnt_id, |
1027 | MAJOR(sb->s_dev), MINOR(sb->s_dev)); | 1033 | MAJOR(sb->s_dev), MINOR(sb->s_dev)); |
1028 | seq_dentry(m, mnt->mnt_root, " \t\n\\"); | 1034 | if (sb->s_op->show_path) |
1035 | err = sb->s_op->show_path(m, mnt); | ||
1036 | else | ||
1037 | seq_dentry(m, mnt->mnt_root, " \t\n\\"); | ||
1038 | if (err) | ||
1039 | goto out; | ||
1029 | seq_putc(m, ' '); | 1040 | seq_putc(m, ' '); |
1030 | seq_path_root(m, &mnt_path, &root, " \t\n\\"); | 1041 | seq_path_root(m, &mnt_path, &root, " \t\n\\"); |
1031 | if (root.mnt != p->root.mnt || root.dentry != p->root.dentry) { | 1042 | if (root.mnt != p->root.mnt || root.dentry != p->root.dentry) { |
@@ -1060,7 +1071,12 @@ static int show_mountinfo(struct seq_file *m, void *v) | |||
1060 | seq_puts(m, " - "); | 1071 | seq_puts(m, " - "); |
1061 | show_type(m, sb); | 1072 | show_type(m, sb); |
1062 | seq_putc(m, ' '); | 1073 | seq_putc(m, ' '); |
1063 | mangle(m, mnt->mnt_devname ? mnt->mnt_devname : "none"); | 1074 | if (sb->s_op->show_devname) |
1075 | err = sb->s_op->show_devname(m, mnt); | ||
1076 | else | ||
1077 | mangle(m, mnt->mnt_devname ? mnt->mnt_devname : "none"); | ||
1078 | if (err) | ||
1079 | goto out; | ||
1064 | seq_puts(m, sb->s_flags & MS_RDONLY ? " ro" : " rw"); | 1080 | seq_puts(m, sb->s_flags & MS_RDONLY ? " ro" : " rw"); |
1065 | err = show_sb_opts(m, sb); | 1081 | err = show_sb_opts(m, sb); |
1066 | if (err) | 1082 | if (err) |
@@ -1086,11 +1102,15 @@ static int show_vfsstat(struct seq_file *m, void *v) | |||
1086 | int err = 0; | 1102 | int err = 0; |
1087 | 1103 | ||
1088 | /* device */ | 1104 | /* device */ |
1089 | if (mnt->mnt_devname) { | 1105 | if (mnt->mnt_sb->s_op->show_devname) { |
1090 | seq_puts(m, "device "); | 1106 | err = mnt->mnt_sb->s_op->show_devname(m, mnt); |
1091 | mangle(m, mnt->mnt_devname); | 1107 | } else { |
1092 | } else | 1108 | if (mnt->mnt_devname) { |
1093 | seq_puts(m, "no device"); | 1109 | seq_puts(m, "device "); |
1110 | mangle(m, mnt->mnt_devname); | ||
1111 | } else | ||
1112 | seq_puts(m, "no device"); | ||
1113 | } | ||
1094 | 1114 | ||
1095 | /* mount point */ | 1115 | /* mount point */ |
1096 | seq_puts(m, " mounted on "); | 1116 | seq_puts(m, " mounted on "); |
@@ -1104,7 +1124,8 @@ static int show_vfsstat(struct seq_file *m, void *v) | |||
1104 | /* optional statistics */ | 1124 | /* optional statistics */ |
1105 | if (mnt->mnt_sb->s_op->show_stats) { | 1125 | if (mnt->mnt_sb->s_op->show_stats) { |
1106 | seq_putc(m, ' '); | 1126 | seq_putc(m, ' '); |
1107 | err = mnt->mnt_sb->s_op->show_stats(m, mnt); | 1127 | if (!err) |
1128 | err = mnt->mnt_sb->s_op->show_stats(m, mnt); | ||
1108 | } | 1129 | } |
1109 | 1130 | ||
1110 | seq_putc(m, '\n'); | 1131 | seq_putc(m, '\n'); |