Lines Matching full:a

20 A process wants to clone its own namespace, but still wants to access the CD
33 a. shared mount
39 2a) A shared mount can be replicated to as many mountpoints and all the
44 Let's say /mnt has a mount that is shared.
56 a b c
59 a b c
61 Now let's say we mount a device at /tmp/a
62 # mount /dev/sd0 /tmp/a
64 #ls /tmp/a
67 #ls /mnt/a
72 And the same is true even when /dev/sd0 is mounted on /mnt/a. The
73 contents will be visible under /tmp/a too.
76 2b) A slave mount is like a shared mount except that mount and umount events
79 All slave mounts have a master mount which is a shared.
83 Let's say /mnt has a mount which is shared.
89 the new mount at /tmp becomes a shared mount and it is a replica of
92 Now let's make the mount at /tmp; a slave of /mnt
95 let's mount /dev/sd0 on /mnt/a
96 # mount /dev/sd0 /mnt/a
98 #ls /mnt/a
101 #ls /tmp/a
119 2c) A private mount does not forward or receive propagation.
124 2d) A unbindable mount is a unbindable private mount
126 let's say we have a mount at /mnt and we make is unbindable
135 Binding a unbindable mount is a invalid operation.
152 A) A process wants to clone its own namespace, but still wants to
161 Now any process that clones off a new namespace will have a
162 mount at /cdrom which is a replica of the same mount in the
165 So when a CD is inserted and mounted at /cdrom that mount gets
169 B) A process wants its mounts invisible to any other process, but
179 A new process can clone off a new namespace. And mark some part
195 The above semantics allows a way to share mounts across
198 associate/disassociate a namespace with userid, then each user
205 a underlying versioning file system can return different
217 and if /usr has a versioning filesystem mounted, then that
221 A user can request v3 version of the file /usr/fs/namespace.c
235 5a) Mount states
237 A given mount can be in one of the following states
244 A 'propagation event' is defined as event generated on a vfsmount
247 A 'peer group' is defined as a group of vfsmounts that propagate
252 A 'shared mount' is defined as a vfsmount that belongs to a
267 A 'slave mount' is defined as a vfsmount that receives
270 A slave mount as the name implies has a master mount from which
272 the slave mount to the master. Only a shared mount can be made
273 a slave by executing the following command
277 A shared mount that is made as a slave is no more shared unless
282 A vfsmount can be both shared as well as slave. This state
283 indicates that the mount is a slave of some vfsmount, and
289 peer group, and this peer-group is a slave of some other
292 Only a slave vfsmount can be made as 'shared and slave' by
295 or by moving the slave vfsmount under a shared vfsmount.
299 A 'private mount' is defined as vfsmount that does not
304 A 'unbindable mount' is defined as vfsmount that does not
310 The state diagram below explains the state transition of a mount,
333 ** slaving a non-shared mount has no effect on the mount.
336 the state of a mount depending on type of the destination mount. Its
343 mount --bind A/a B/b
345 where 'A' is the source mount, 'a' is the dentry in the mount 'A', 'B'
348 The outcome depends on the type of mount of 'A' and 'B'. The table
353 |source(A)->| shared | private | slave | unbindable |
365 1. 'A' is a shared mount and 'B' is a shared mount. A new mount 'C'
366 which is clone of 'A', is created. Its root dentry is 'a' . 'C' is
369 propagates to. A new propagation tree containing 'C1',..,'Cn' is
372 of 'A'.
374 2. 'A' is a private mount and 'B' is a shared mount. A new mount 'C'
375 which is clone of 'A', is created. Its root dentry is 'a'. 'C' is
378 propagates to. A new propagation tree is set containing all new mounts
382 3. 'A' is a slave mount of mount 'Z' and 'B' is a shared mount. A new
383 mount 'C' which is clone of 'A', is created. Its root dentry is 'a' .
386 'B' propagates to. A new propagation tree containing the new mounts
392 4. 'A' is a unbindable mount and 'B' is a shared mount. This is a
395 5. 'A' is a private mount and 'B' is a non-shared(private or slave or
396 unbindable) mount. A new mount 'C' which is clone of 'A', is created.
397 Its root dentry is 'a'. 'C' is mounted on mount 'B' at dentry 'b'.
399 6. 'A' is a shared mount and 'B' is a non-shared mount. A new mount 'C'
400 which is a clone of 'A' is created. Its root dentry is 'a'. 'C' is
401 mounted on mount 'B' at dentry 'b'. 'C' is made a member of the
402 peer-group of 'A'.
404 7. 'A' is a slave mount of mount 'Z' and 'B' is a non-shared mount. A
405 new mount 'C' which is a clone of 'A' is created. Its root dentry is
406 'a'. 'C' is mounted on mount 'B' at dentry 'b'. Also 'C' is set as a
407 slave mount of 'Z'. In other words 'A' and 'C' are both slave mounts of
408 'Z'. All mount/unmount events on 'Z' propagates to 'A' and 'C'. But
409 mount/unmount on 'A' do not propagate anywhere else. Similarly
412 8. 'A' is a unbindable mount and 'B' is a non-shared mount. This is a
413 invalid operation. A unbindable mount cannot be bind mounted.
427 A
434 of a type other than unbindable.
442 A'
454 mount --move A B/b
456 where 'A' is the source mount, 'B' is the destination mount and 'b' is
459 The outcome depends on the type of the mount of 'A' and 'B'. The table
460 below is a quick reference.
464 | source(A)->| shared | private | slave | unbindable |
473 NOTE: moving a mount residing under a shared mount is invalid.
477 1. 'A' is a shared mount and 'B' is a shared mount. The mount 'A' is
480 propagation from mount 'B'. A new propagation tree is created in the
484 of 'A'.
486 2. 'A' is a private mount and 'B' is a shared mount. The mount 'A' is
489 propagation from mount 'B'. The mount 'A' becomes a shared mount and a
494 3. 'A' is a slave mount of mount 'Z' and 'B' is a shared mount. The
495 mount 'A' is mounted on mount 'B' at dentry 'b'. Also new mounts 'A1',
497 receive propagation from mount 'B'. A new propagation tree is created
501 'A'. Mount 'A' continues to be the slave mount of 'Z' but it also
504 4. 'A' is a unbindable mount and 'B' is a shared mount. The operation
507 propagation from 'B'. And since the mount 'A' is unbindable, cloning
510 5. 'A' is a private mount and 'B' is a non-shared(private or slave or
511 unbindable) mount. The mount 'A' is mounted on mount 'B' at dentry 'b'.
513 6. 'A' is a shared mount and 'B' is a non-shared mount. The mount 'A'
514 is mounted on mount 'B' at dentry 'b'. Mount 'A' continues to be a
517 7. 'A' is a slave mount of mount 'Z' and 'B' is a non-shared mount.
518 The mount 'A' is mounted on mount 'B' at dentry 'b'. Mount 'A'
519 continues to be a slave mount of mount 'Z'.
521 8. 'A' is a unbindable mount and 'B' is a non-shared mount. The mount
522 'A' is mounted on mount 'B' at dentry 'b'. Mount 'A' continues to be a
535 that the source mount is always a private mount.
542 umount A
544 where 'A' is a mount mounted on mount 'B' at dentry 'b'.
574 A cloned namespace contains all the mounts as that of the parent
577 Let's say 'A' and 'B' are the corresponding mounts in the parent and the
580 If 'A' is shared, then 'B' is also shared and 'A' and 'B' propagate to
583 If 'A' is a slave mount of 'Z', then 'B' is also the slave mount of
586 If 'A' is a private mount, then 'B' is a private mount too.
588 If 'A' is unbindable mount, then 'B' is a unbindable mount too.
593 A. What is the result of the following command sequence?
626 its root dentry is 1. Let's call this mount 'A'
627 And then we have a second mount at /tmp1 with root
629 Next we have a third mount at /mnt with root dentry
632 'B' is the slave of 'A' and 'C' is a slave of 'B'
633 A -> B -> C
639 The mount is attempted on 'A'
655 exportfs is a heavyweight way of accomplishing part of what
656 shared subtree can do. I cannot imagine a way to implement the
664 if one rbind mounts a tree within the same subtree 'n' times
667 mounts. Here is a example.
737 One could use a series of umount at each step to prune
738 out the unneeded mounts. But there is a better solution.
802 8A) Datastructure
823 the vfsmount. MNT_SHARE indicates that the vfsmount is a shared
827 All the shared vfsmounts in a peer group form a cyclic list through
830 All vfsmounts with the same ->mnt_master form on a cyclic list anchored
834 of master peer group. To find all immediate slaves of a peer group
836 Conceptually it's just a single set - distribution among the
840 All vfsmounts in a peer group have the same ->mnt_master. If it is
841 non-NULL, they form a contiguous (ordered) segment of slave list.
843 A example propagation tree looks as shown in the figure below.
844 [ NOTE: Though it looks like a forest, if we consider all the shared
845 mounts as a conceptual entity called 'pnode', it becomes a tree]
848 A <--> B <--> C <---> D
856 In the above figure A,B,C and D all are shared and propagate to each
857 other. 'A' has got 3 slave mounts 'E' 'F' and 'G' 'C' has got 2 slave
862 A's ->mnt_share links with the ->mnt_share of 'B' 'C' and 'D'
864 A's ->mnt_slave_list links with ->mnt_slave of 'E', 'K', 'F' and 'G'
868 vfsmount of 'A'
887 The former modifies a vfsmount that has not been visible in any shared
906 a) Create the necessary number of mount trees to
911 c) Link all the new mounts to form a propagation tree that