The Clustering and Userland VFS transport protocol - summary

Matthew Dillon dillon at apollo.backplane.com
Wed May 17 17:01:14 PDT 2006


    Well, I hit a hangup.  In order for the vnodes to operate well in a
    master<->slave environment, vnode operations have to be dispatched
    with the vnode unlocked.  That is, the locking has to be performed by
    the target rather than the originator.

    So, for example, instead of calling VOP_READ() with a shared lock on
    the vnode held, one would call VOP_READ() with just a vnode ref and
    the target VFS would be responsible for locking the vnode for the
    operation.

    Fortunately the really complex locking arrangements... lookup+create,
    lookup+delete, lookup+rename, etc, are all target-side operations and
    don't have to be modified.  But just about everything else does.  In
    addition, forced unmounts (umount -f) and descriptor revocation (aka
    revoke()) will have to be handled completely differently.

    On the bright side, the work involved happens to be the same work needed
    to make the descriptor and I/O paths MP safe... or at least MP capable.
    So it looks like I am going to be doing a bunch of MP-related work before
    I can begin work on the userland VFS/CLUSTER coding.

						-Matt





More information about the Kernel mailing list