Bug 5954
Summary: | Client performs retries of NLM_LOCK request upon BLOCKED status | ||
---|---|---|---|
Product: | File System | Reporter: | Jean-Louis ROCHETTE (rochette_jean-louis) |
Component: | NFS | Assignee: | Trond Myklebust (trondmy) |
Status: | REJECTED INSUFFICIENT_DATA | ||
Severity: | normal | CC: | bunk |
Priority: | P2 | ||
Hardware: | i386 | ||
OS: | Linux | ||
Kernel Version: | 2.6.9-1.667smp | Subsystem: | |
Regression: | --- | Bisected commit-id: |
Description
Jean-Louis ROCHETTE
2006-01-25 06:41:42 UTC
This is most deliberate, and has _always_ been a feature of NLM. It is needed as a workaround for those servers that may drop NLM requests (see the comment before nlmclnt_lock()). The other thing that may trigger it is signals. If the userland process has set up alarms or other signals that are not blocked, then the single unix spec says that we must abort the syscall (and the Linux convention is then to return ERESTARTSYS). I'm a bit surprised by so quick retries. But, that's OK. Thanks ! Please consider that immediate retries can flood the server and are not in accordance with the protocol. The client is supposed to wait for a server callback. In case some unfair servers may drop the blocked request, the client should perform retries, but not faster than one every 5 or 10 milliseconds at least. Here we can see a delay of 300 microseconds only between the server reply and the client retry; I think this is immediate retry, and will cause unnecessary processing at the server side. Jean-Louis. The standard retry time is 30 seconds. I suggest looking at a strace log to find out if this is a situation where signals are causing the client to abort the syscall with ERESTARTSYS and then retry. Please reopen this bug if: - it is still present in kernel 2.6.17 and - you can provide the requested information. |