aboutsummaryrefslogtreecommitdiff
path: root/examples/kernel-patches/2.4.x_mount_patch
blob: 91f5262c1f1bdc266963a833012ee98546d4b846 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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/