On Wed, 2 Aug 2006, David Howells wrote:

chas williams - CONTRACTOR <[EMAIL PROTECTED]> wrote:

and yet another version.  this time, you dont (or shouldnt) need changes
to your local kernel tree.  we have our own version of join_session_keyring()
which uses the public bits of the keyring api and a bit of information from
task 1 to allocate and link a new session keyring.

I like your ingenuity:-)

what we really need from the linux kernel: the keyring key_type exported,

Whilst I could do that, I'm not sure it'd help you as you'd need to use the
RCU interface to access keyrings directly.

We'll come back to that.

the keyring primitives exported,

That should be possible for the most part.  Which ones were you thinking of?

or join_session_keyring() exported.

That should be possible.

You could also use something like:

        #include <asm/unistd.h>

        static inline _syscall2(long, keyctl, int, option, void*, arg2)

        long serial = keyctl(KEYCTL_JOIN_SESSION_KEYRING, NULL);

Is keyctl() exported in the kernel now? Otherwise, this won't work for us.

The first is a definite no-go if you can't use RCU - you could cause other
parts of the kernel to oops.

Well, we need to pursue that otherwise.

Another alternative might be to try putting the PAG stuff in the main kernel,
and add a keyctl function to set or get a pag.

That would be fine, I suspect, since NFS v4 would probably also use it. Kevin?

The main thing I'm not sure about how to do is to change the PAG to which a
process's parent subscribes.  It is possible, but the locking is interesting.

Don't. When a child changes a PAG, it's the child and its' children get the new one, and the parent is left alone.

Derrick

_______________________________________________
OpenAFS-devel mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-devel

Reply via email to