Hello!There is a problem with blocking async posix lock enqueue in 2.6.22 and 2.6.23 kernels. Lock call to underlying FS is done just fine, but when fl_grant is called to inform lockd of succesful granting, nothing happens, and no reply to client is sent. The end result
is client reports that the server is not responding.
I enabled dprintks in the code and I see that immediately after
fl_grant, there is nlmsvc_grant_blocked
message (after callback: label) printed. Then server not
responding messages start, and
after every message about "coulndn't create RPC handle for
localhost" I see
nlmsvc_grant_blocked "lockd: GRANTing blocked lock" message again
with no activity
from underlying FS.I am attaching a reproducer that I have, it is quite simple actually. Take note, that path to file to lock is hardcoded, so adjust for your environment please. Lcoking should be performed on a file that resides on nfs client mountpoint.
I reproduced the problem with 2.6.22 and 2.6.23 with Lustre (I am working on adapting lustre
to async posix locks API) and GFS2.
Setup is totally local, i.e. I have single node on which there is
gfs (both server and client)
(or lustre - just client, but that does not make any difference),
nfs server and nfs client
that mounts exported gfs or lustre.
Bye,
Oleg
flock.c
Description: Binary data
