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/
