kAFS To-Do List

Component What Where Ease State
AF_RXRPC protocol Service upgrade Kernel C Medium Done
Kerberos 5 support Kernel C Unknown Done
RxGK/GSS security class Kernel C Unknown no
YFS-RxGK security class Kernel C Unknown no
Pin UDP routes by rxrpc_connection Kernel C Medium no
Use MSG_CONFIRM on the UDP socket Kernel C Easy no
Support per-call sendfile(), splice-in and splice-out, using setsockopt() to select the call to use Kernel C Easy Written
Allow sockets to be bonded together to make multiple queues Kernel C Easy no
kAFS filesystem Provide pioctl replacement, using getxattr, sysfs, procfs, keyctl and other interfaces as appropriate. This is needed for path-based services Kernel C Easy to Hard Partial
Dynamic root support (mount -o dyn) Kernel C Medium v4.16
IPv6: Upcall for IPv6 addresses as well as IPv4 Kernel C Easy v4.18
IPv6: Support for VL server comms Kernel C Hard v4.15
IPv6: Support for FS server comms with YFS Kernel C Hard v4.15
Multipage read support Kernel C Medium Done
Multipage write support Kernel C Medium v4.15
Handling volumes being moved, busy or offline Kernel C Medium v4.15
Re-evaluate server/volume state after having had difficulty reaching it. Kernel C Medium v4.18
Magic path substitution handling (@sys and @cell) Kernel C Easy v4.17
Use of speculative batched file status fetching from dir lookup Kernel C Medium v4.17
Local directory blob editing to avoid reload after create/mkdir/unlink/etc. Kernel C Hard v4.17
Handle permissions on a per file basis instead of per directory Kernel C Easy v4.15
Modify unix mode bit handling Kernel C Easy v4.11
Network namespacing support Kernel C Medium v4.18
Network namespace propagation over automounts Kernel C Medium v5.1
Silly rename on unlink or rename Kernel C Medium v5.2
Byte-range file locking emulation Kernel C Medium v5.2
Make calls asynchronous inside the kernel, including address and server rotation Kernel C Medium no
AIO read/write support Kernel C Medium no
O_DIRECT read/write support Kernel C Medium Partial
Container keyring Kernel C Medium no
inotify (and similar) support Kernel C Medium-Hard no
Fix population of the vfs group id Kernel C Easy no
SELinux/Smack label storage - requires xattr support on the server Kernel C Unknown no
YFS FS client and CM service support Kernel C Unknown v4.20
File system exports for afs2nfs translation Kernel C Medium no
Getting kafs enabled in the Fedora kernel (Fedora bz 1616016) . Spec Easy F29
Local caching Fscache: Rewrite of object model Kernel C Medium Written
Fscache: Rewrite of I/O API Kernel C Medium Written
Cachefiles: Use bitmap to track contents rather than bmap() Kernel C Easy Written
Cachefiles: Use kiocb asynchronous direct-I/O interface rather than event interception Kernel C Easy Written
Cachefiles: Use O_TMPFILE to speed up invalidation Kernel C Medium Written
Write local data changes to cache Kernel C Medium Written
Write local directory changes to cache Kernel C Medium Written
Disconnected mode: Operation Kernel C Medium no
Disconnected mode: Modification journal and change submission on reconnection Kernel C Medium no
Disconnected mode: Conflict resolution Kernel C Medium no
filesystem Getting the /afs mountpoint in the FHS (Linux Foundation bug 1438) Spec - Review
Getting the /afs mountpoint accepted by Fedora (Fedora packaging bug 888) Spec - Accepted
Getting the /afs mountpoint packaged in the base filesystem rpm as a filesystem-afs subpackage (Fedora bz 1720232) . Spec Easy F31
kafs-client systemd files Config Easy v0.1
Start/stop managing and mounter systemd Easy v0.1
Configuration loading from systemd C/Script Easy v0.1
Support for Loading AuriStorFS profile cell information Unknown Unknown v0.1
SRV DNS record support for DNS upcalls (RFC 5864) User C Easy v0.1
IPv6: DNS lookups User C Easy v0.1
Read CellServDB on demand User C Easy v0.1
aklog program; may need to interact with kafs-utils. A cut down program is here. C Easy Partial
PAM support (libpam_kafs_session) C Easy no
Getting the kafs-client package into Fedora (Fedora bz 1724281) . Spec Easy F31
keyutils SRV DNS record support for DNS upcalls (RFC 5864) User C Easy kafs-client
IPv6: DNS lookups User C Easy kafs-client
Allow override by kafs-client User C Easy v1.6
kafs-utils Provide AFS-compatible command line framework (bos, vos, pts, fs, ...) User C Easy Written
Provide a mid-level library, to hide differences between RPC call variants (eg. ListVolumes, XListVolumes), RPC service variants (AFS vs YFS) and to handle server and address rotation User C Medium In progress
Provide compatible AFS command line support (bos, vos, pts, fs, ...) commands User C Easy to Hard In progress
Make it possible to override the AF_RXRPC transport with a shared library plug-in User C Slightly tricky Written
Provide other transport plug-ins for OpenAFS librx, etc..
  • Note that the AF_RXRPC doesn't work in quite the same way as the standard Rx library interface (connections aren't accessible to user; local errors separate from remote aborts). Requires transport separation.
User C Medium no
Provide AFS filesystem query interface User C Medium no
Provide kAFS pluggable query module. Requires kAFS kernel module support. User C Medium no
Provide Python language bindings and scripting interface Python, swig Medium no
Python server support.
  • Maybe pass Python dict of operation ID -> function mappings to backend when starting server, where the server will call the appropriate function to get an app call object. The object would then have methods with predefined names called upon it to deliver data, aborts, acks, etc.
Python lib & C backend Medium no