linux/fs/lockd
Marc Eshel 5ea0d75037 lockd: handle test_lock deferrals
Rewrite nlmsvc_testlock() to use the new asynchronous interface: instead of
immediately doing a posix_test_lock(), we first look for a matching block.
If the subsequent test_lock returns anything other than -EINPROGRESS, we
then remove the block we've found and return the results.

If it returns -EINPROGRESS, then we defer the lock request.

In the case where the block we find in the first step has B_QUEUED set,
we bypass the vfs_test_lock entirely, instead using the block to decide how
to respond:
	with nlm_lck_denied if B_TIMED_OUT is set.
	with nlm_granted if B_GOT_CALLBACK is set.
	by dropping if neither B_TIMED_OUT nor B_GOT_CALLBACK is set

Signed-off-by: Marc Eshel <eshel@almaden.ibm.com>
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
2007-05-06 20:38:50 -04:00
..
Makefile
clntlock.c [PATCH] fs/lockd/clntlock.c: add missing newlines to dprintk's 2007-01-30 08:26:45 -08:00
clntproc.c NLM: Fix double free in __nlm_async_call 2007-02-03 15:35:02 -08:00
host.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00
mon.c [PATCH] lockd endianness annotations 2006-10-20 10:26:40 -07:00
svc.c Replace remaining references to "driverfs" with "sysfs". 2007-02-17 19:13:42 +01:00
svc4proc.c lockd: handle test_lock deferrals 2007-05-06 20:38:50 -04:00
svclock.c lockd: handle test_lock deferrals 2007-05-06 20:38:50 -04:00
svcproc.c lockd: handle test_lock deferrals 2007-05-06 20:38:50 -04:00
svcshare.c [PATCH] getting rid of all casts of k[cmz]alloc() calls 2006-12-13 09:05:58 -08:00
svcsubs.c locks: allow {vfs,posix}_lock_file to return conflicting lock 2007-05-06 19:23:24 -04:00
xdr.c [PATCH] lockd endianness annotations 2006-12-13 09:05:52 -08:00
xdr4.c [PATCH] lockd endianness annotations 2006-12-13 09:05:52 -08:00