[OpenAFS] Re: another approach for detecting byte-range-lock safeness
Adam Megacz
megacz@cs.berkeley.edu
Mon, 25 Dec 2006 17:13:31 -0800
"chas williams - CONTRACTOR" <chas@cmf.nrl.navy.mil> writes:
> In message <x3k60f1opb.fsf@nowhere.com>,Adam Megacz writes:
>>If so, perhaps I can check what OS is running, use some hardwired
>>syscall value if OS==Linux, and use the fork()-and-fcntl(F_SETLK) to
>>look for (local) enforcement of byte-range locks if OS!=Linux.
> why the special tests for linux?
Because the test doesn't work on Linux. Asking for a byte range lock
on a 1.4.x Linux client results in the whole file being locked at the
server and correct byte-range semantics between processes *on the same
machine*.
This is extra painful because (unlike the "liar locks" on other
clients) there doesn't appear to be any way to test for this behavior
without using AFS-specific APIs. On the upside, the consequences of a
false positive under linux-openafs semantics are simply
deadlock/starvation rather than data corruption.
To avoid deadlock/starvation I need a way to detect that byte-range
locks are being upgraded and put the user program into a
(much less efficient) mode that uses only whole-file locks.
- a
--
PGP/GPG: 5C9F F366 C9CF 2145 E770 B1B8 EFB1 462D A146 C380