afs: Implement @sys substitution handling
authorDavid Howells <dhowells@redhat.com>
Mon, 9 Apr 2018 20:12:31 +0000 (21:12 +0100)
committerDavid Howells <dhowells@redhat.com>
Mon, 9 Apr 2018 20:12:31 +0000 (21:12 +0100)
commit6f8880d8e68155726a2a22e8787cfebf1ffcab08
treeb0e11598c62e9d9c01f3a41cadb7f71b1b901692
parent5cf9dd55a0ec26428f2824aadd16bfa305a5b603
afs: Implement @sys substitution handling

Implement the AFS feature by which @sys at the end of a pathname component
may be substituted for one of a list of values, typically naming the
operating system.  Up to 16 alternatives may be specified and these are
tried in turn until one works.  Each network namespace has[*] a separate
independent list.

Upon creation of a new network namespace, the list of values is
initialised[*] to a single OpenAFS-compatible string representing arch type
plus "_linux26".  For example, on x86_64, the sysname is "amd64_linux26".

[*] Or will, once network namespace support is finalised in kAFS.

The list may be set by:

# for i in foo bar linux-x86_64; do echo $i; done >/proc/fs/afs/sysname

for which separate writes to the same fd are amalgamated and applied on
close.  The LF character may be used as a separator to specify multiple
items in the same write() call.

The list may be cleared by:

# echo >/proc/fs/afs/sysname

and read by:

# cat /proc/fs/afs/sysname
foo
bar
linux-x86_64

Signed-off-by: David Howells <dhowells@redhat.com>
Documentation/filesystems/afs.txt
fs/afs/dir.c
fs/afs/internal.h
fs/afs/main.c
fs/afs/proc.c