[OpenAFS-devel] Re: [PATCH] in-core AFS multiplexor and PAG support

David Howells dhowells@warthog.cambridge.redhat.com
Tue, 13 May 2003 17:57:47 +0100


> AFS is annoying and painful no matter how you look at it.  :/
> 
> But I don't think 90+ new syscalls is the answer, even for 2.7.

I think it's going to be either

 (1) try to maintain compatibility with OpenAFS and Arla's current syscall
     setup

 (2) totally rewrite the interface and tell OpenAFS/Arla they have to change
     too.

In the case of (2), I think the AFS operations would best be emulated by a
combination of the following means:

 (1) Use the setpag() syscall in my patch.

 (2) Add syscalls for managing tokens on a general filesystem-by-filesystem
     basis (only need four ops: set, get, delete and clear-all). These could
     work through operations in struct file_system_type.

 (3) Work through sysfs files for fs-specific control functions. Things like
     adding cells would come into this category.

 (4) Emulate as much as many of the inode-requiring pioctl calls as possible
     with xattr syscalls.

However, this leaves at least one that doesn't fit into any of the above
categories. VIOC_STAT_MT_PT takes an inode, and so should come into (4) except
that the xattr key size isn't sufficiently capacious.

There are two ways to deal with this:

 (1) Add an actual pioctl syscall as a top-level syscall and make it either
     call a pioctl method in inode_operations or maybe have it fake a dentry
     and file and call file_operations->ioctl.

 (2) Open the directory holding the mountpoint and make an ioctl that aims at
     the mountpoint in question.

David