[PATCH] VFS: Clean up shared mount flag propagation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Al, you might have already fixed this as part of your mount flag
rewrite, but here's a patch to clean up some problems with shared
mount flag propagation that I ran into while working on union mounts.
Against 2.6.32.

-VAL

commit 3f436c4466f278900d451494b317f6bb80b4c24b
Author: Valerie Aurora <vaurora@xxxxxxxxxx>
Date:   Tue Jan 26 11:09:00 2010 -0800

    VFS: Clean up shared mount flag propagation
    
    The handling of mount flags in set_mnt_shared() got a little tangled
    up during previous cleanups, with the following problems:
    
    * MNT_PNODE_MASK is defined as a literal constant when it should be a
      bitwise xor of other MNT_* flags
    * set_mnt_shared() clears and then sets MNT_SHARED (part of MNT_PNODE_MASK)
    * MNT_PNODE_MASK could use a comment in mount.h
    * MNT_PNODE_MASK is a terrible name, change to MNT_SHARED_MASK
    
    This patch fixes these problems.

diff --git a/fs/pnode.h b/fs/pnode.h
index 958665d..adc52ca 100644
--- a/fs/pnode.h
+++ b/fs/pnode.h
@@ -26,7 +26,7 @@
 
 static inline void set_mnt_shared(struct vfsmount *mnt)
 {
-	mnt->mnt_flags &= ~MNT_PNODE_MASK;
+	mnt->mnt_flags &= ~MNT_SHARED_MASK;
 	mnt->mnt_flags |= MNT_SHARED;
 }
 
diff --git a/include/linux/mount.h b/include/linux/mount.h
index 5d52753..257985f 100644
--- a/include/linux/mount.h
+++ b/include/linux/mount.h
@@ -34,7 +34,15 @@ struct mnt_namespace;
 
 #define MNT_SHARED	0x1000	/* if the vfsmount is a shared mount */
 #define MNT_UNBINDABLE	0x2000	/* if the vfsmount is a unbindable mount */
-#define MNT_PNODE_MASK	0x3000	/* propagation flag mask */
+/*
+ * MNT_SHARED_MASK is the set of flags that should be cleared when a
+ * mount becomes shared.  Currently, this is only the flag that says a
+ * mount cannot be bind mounted, since this is how we create a mount
+ * that shares events with another mount.  If you add a new MNT_*
+ * flag, consider how it interacts with shared mounts.
+ */
+#define MNT_SHARED_MASK	(MNT_UNBINDABLE)
+
 
 struct vfsmount {
 	struct list_head mnt_hash;

--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux