afs: Display manually added cells in dynamic root mount
authorDavid Howells <dhowells@redhat.com>
Fri, 15 Jun 2018 14:19:22 +0000 (15:19 +0100)
committerDavid Howells <dhowells@redhat.com>
Fri, 15 Jun 2018 14:27:09 +0000 (15:27 +0100)
commit0da0b7fd73e4f20e1a987dfade0b36bb4813cf10
treee0b6e920d546fc0dbf0d813418ad3e4b0d61eabe
parentc88d5a7fff2ef9aeed8aebb06f59d565693d0634
afs: Display manually added cells in dynamic root mount

Alter the dynroot mount so that cells created by manipulation of
/proc/fs/afs/cells and /proc/fs/afs/rootcell and by specification of a root
cell as a module parameter will cause directories for those cells to be
created in the dynamic root superblock for the network namespace[*].

To this end:

 (1) Only one dynamic root superblock is now created per network namespace
     and this is shared between all attempts to mount it.  This makes it
     easier to find the superblock to modify.

 (2) When a dynamic root superblock is created, the list of cells is walked
     and directories created for each cell already defined.

 (3) When a new cell is added, if a dynamic root superblock exists, a
     directory is created for it.

 (4) When a cell is destroyed, the directory is removed.

 (5) These directories are created by calling lookup_one_len() on the root
     dir which automatically creates them if they don't exist.

[*] Inasmuch as network namespaces are currently supported here.

Signed-off-by: David Howells <dhowells@redhat.com>
fs/afs/cell.c
fs/afs/dynroot.c
fs/afs/internal.h
fs/afs/main.c
fs/afs/super.c
fs/namei.c
include/linux/namei.h