[patch 4/7] vfs: mountinfo: add mount peer group ID
authorMiklos Szeredi <mszeredi@suse.cz>
Thu, 27 Mar 2008 12:06:23 +0000 (13:06 +0100)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 23 Apr 2008 04:04:51 +0000 (00:04 -0400)
commit719f5d7f0b90ac2c8f8ca4232eb322b266fea01e
treeed3f63e0856b8b319764d475e68b35719ac0ccb9
parent73cd49ecdde92fdce131938bdaff4993010d181b
[patch 4/7] vfs: mountinfo: add mount peer group ID

Add a unique ID to each peer group using the IDR infrastructure.  The
identifiers are reused after the peer group dissolves.

The IDR structures are protected by holding namepspace_sem for write
while allocating or deallocating IDs.

IDs are allocated when a previously unshared vfsmount becomes the
first member of a peer group.  When a new member is added to an
existing group, the ID is copied from one of the old members.

IDs are freed when the last member of a peer group is unshared.

Setting the MNT_SHARED flag on members of a subtree is done as a
separate step, after all the IDs have been allocated.  This way an
allocation failure can be cleaned up easilty, without affecting the
propagation state.

Based on design sketch by Al Viro.

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/namespace.c
fs/pnode.c
include/linux/mount.h