On 13 Aug 2010, at 14:18, Derek Atkins wrote:
> 
> So the questions to you would be:  What is AFSLock and what is
> KernelLock?

I guess you haven't read the earlier posts. I'd encourage you to read the whole 
thread - there's a lot more information there. But, to summarise, these aren't 
process locks that we're talking about, but file locking enrolments. AFSLock is 
the AFS file lock held, and administered by, the file server.  KernelLock is 
the enrolment of that file lock in the Linux kernel's file lock tracking 
scheme, so that we can handle byte range locks.

>  And what are the relationships between them?  Clearly they
> are not quite independent.

No - they are deeply dependent

*) If the file server grants you a lock, then you should register that lock 
with the kernel
*) If you release a lock on the fileserver, then you should free that lock in 
the kernel, too.

>  You ask "what if ReleaseAFSLock fails?"  Can you fail to release the AFS 
> lock?

Yes. The fileserver can fail the ReleaseAFSLock RPC for a number of reasons, or 
you could actually fail to contact the file server. Under those circumstances, 
the client should assume that the file is still locked, and return a failure to 
the user. (Of course, there is a whole rats nest here about files that are 
being released through a call to close, and applications which don't check that 
close succeeds)

>  If so, what would it MEAN to fail to release the AFS Lock?

In many, but not all, situations it means that the client still holds a lock on 
that file.

> If you're really worried about failing to release the AFSLock, then what 
> about if you can only have the AFSLock if you have the KernelLock?

The KerneLock is local to a particular client, the AFSLock is global. So 
there's no way of enforcing this for a particular machine.

Cheers,

Simon.

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

Reply via email to