Strace (client) shows: fcntl64(3, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=0, len=0}) = -1 ENOLCK (No locks available) dmesg (client) shows: nsm_mon_unmon: rpc failed, status=-13 lockd: cannot monitor xxx.xxx.xxx.xxx lockd: failed to monitor xxx.xxx.xxx.xxx repeated many times (where xxx.xxx.xxx.xxx is the server's IP). Client: Red Hat 8.0, 2.4.18-14smp Server: Red Hat 7.2, fully updated (2.4.18-17.7.xsmp)
First, could you please check your reverse DNS? ie. on the client, do dig -x xxx.xxx.xxx.xxx (where xxx.xxx.xxx.xxx is the server's IP). If the DNS lookup fails, rpc.statd will refuse to monitor the requested host.
Just checked, the reverse DNS is OK.
Is it working in both directions (ie. server can resolve the client, too?) Do you have the "nfslock" service running on both client and server? (Look for a running process named "rpc.statd)
Are, you are right - statd was not running on the client. And it's my fault - I made too much read-only and it didn't have write access to /var/lib/nfs/statd. Sorry about that.