From acecc47261567816ace517333ae445c98d4a304d Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Fri, 7 Jul 2000 21:22:19 +0000 Subject: Add in my fix for 2.4.x kernels so /proc/mounts will not have useless deg entries which break mount, df, and friends. Renamed WillThisGoIntoTheKernel to avoid any confision. -Erik --- examples/kernel-patches/2.4.x_mount_patch | 66 +++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 examples/kernel-patches/2.4.x_mount_patch (limited to 'examples/kernel-patches/2.4.x_mount_patch') diff --git a/examples/kernel-patches/2.4.x_mount_patch b/examples/kernel-patches/2.4.x_mount_patch new file mode 100644 index 000000000..91f5262c1 --- /dev/null +++ b/examples/kernel-patches/2.4.x_mount_patch @@ -0,0 +1,66 @@ +On Sat Jul 01, 2000 at 12:04:36PM -0400, Alexander Viro wrote: +> +> Try to trace the path from their roots to absolute root(s)... They simply +> should not be in the output - that's a debugging stuff and I have no +> problems with removing it from /proc/mounts. No heuristics needed - we +> can pass NULL as dev_name in kern_mount() and check for NULL ->mnt_devname +> in get_filesystem_info(). I'll do that as soon as threading patches will +> be over (hopefully RSN - they went to Linus). +> + +Ok, cool. So something like then? I kept in the filter for FS_NOMOUNT +filesystems, as I assume those should never show up in /proc/mounts, and added +that filter to the /proc/filesystems listing as well. + + -Erik + +-- +Erik B. Andersen Web: http://www.xmission.com/~andersen/ + email: andersee@debian.org +--This message was written using 73% post-consumer electrons-- + + +--- fs/super.c.virgin Wed Jun 28 22:42:35 2000 ++++ fs/super.c Mon Jul 3 12:07:07 2000 +@@ -251,6 +251,10 @@ int get_filesystem_list(char * buf) + read_lock(&file_systems_lock); + tmp = file_systems; + while (tmp && len < PAGE_SIZE - 80) { ++ /* Filter out any filesystems that are marked as FS_NOMOUNT. ++ * User space doesn't need to know or care about them */ ++ if (tmp->fs_flags & FS_NOMOUNT) ++ continue; + len += sprintf(buf+len, "%s\t%s\n", + (tmp->fs_flags & FS_REQUIRES_DEV) ? "" : "nodev", + tmp->name); +@@ -443,6 +447,16 @@ int get_filesystem_info( char *buf ) + path = d_path(tmp->mnt_root, tmp, buffer, PAGE_SIZE); + if (!path) + continue; ++ /* Filter out any filesystems that are marked as FS_NOMOUNT. ++ * User space doesn't need to know or care about them */ ++ if (tmp->mnt_sb->s_type->fs_flags & FS_NOMOUNT) ++ continue; ++ /* kern_mount() allows the kernel to mount internal-use-only ++ * filesystems, and marks then with ->mnt_devname==NULL, so ++ * filter out those here */ ++ if (tmp->mnt_devname == NULL) ++ continue; ++ + len += sprintf( buf + len, "%s %s %s %s", + tmp->mnt_devname, path, + tmp->mnt_sb->s_type->name, +@@ -895,7 +909,7 @@ struct vfsmount *kern_mount(struct file_ + put_unnamed_dev(dev); + return ERR_PTR(-EINVAL); + } +- mnt = add_vfsmnt(sb, sb->s_root, sb->s_root, NULL, "none", type->name); ++ mnt = add_vfsmnt(sb, sb->s_root, sb->s_root, NULL, NULL, type->name); + if (!mnt) { + kill_super(sb, 0); + return ERR_PTR(-ENOMEM); + +- +To unsubscribe from this list: send the line "unsubscribe linux-kernel" in +the body of a message to majordomo@vger.rutgers.edu +Please read the FAQ at http://www.tux.org/lkml/ -- cgit v1.2.3