From: Steve Dickson <SteveD@redhat.com>
Cc: NFS@lists.sourceforge.net
Subject: Re: lockd recovery not working on RH with 2.6 kernel
Date: Wed, 17 Nov 2004 14:58:17 -0500 [thread overview]
Message-ID: <419BAD59.80708@RedHat.com> (raw)
In-Reply-To: <OF573E8465.7E3D5CC0-ON88256F49.0064BB5C-88256F49.00698B56@us.ibm.com>
Marc Eshel wrote:
>The problem is that after the NFS sever machine reboots its statd sends a
>notification to all NFS clients that had locking activity but the clients
>fail to reclaim their locks.
>
>
Looking into this... either I'm missing some really crucial patches or
lock recover with the 2.6.9/10 kernels is really broken. I'm really
hoping its the former.... :) but there is what I'm seeing...
The client takes a lock. The server is rebooted (both 2.6.9 kernels).
The server statd sends the SM_NOTIFY to the client statd, and
client statd notifies the kernel, BUT not with enough information
for the kernel to find the granted lock, so the lock request is blown
off....
The details: since nlm4svc_decode_reboot() does not set argp->vers
or argp->proto, nlm_lookup_host() does not find the outstanding nlm_host
pointer so a new one is created, which causes both reclaimer() and
nlmclnt_mark_reclaim() not to find the file_lock pointer....
Now giving the kernel the correct information (i.e. setting both
argp->vers
and argp->proto to the correctly values), the correct nlm_host pointer is
found which cause the client to query the server portmapper for lockd's
port.
Unfortunately, lockd is not up yet so the portmap query fails and again,
the request is blown off....
The details: nlmclnt_reclaim() calls nlmclnt_call() which fails with
-EACCES because the portmapper is up but lockd is not.
Now when a retry mechanism is added to nlmclnt_reclaim() which
ignores the EACCES, a lock request, with the reclaim bit set, is
sent to the server. Unfortunately, the server (for a reason I have yet
to figure out) denies the lock but then immediately grants the lock.
The really bizarre thing is both server messages have the same XID!
Is anybody else seeing these type of oddities with lock recovery?
SteveD.
-------------------------------------------------------
This SF.Net email is sponsored by: InterSystems CACHE
FREE OODBMS DOWNLOAD - A multidimensional database that combines
robust object and relational technologies, making it a perfect match
for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8
_______________________________________________
NFS maillist - NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs
next prev parent reply other threads:[~2004-11-17 19:58 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-11 19:12 lockd recovery not working on RH with 2.6 kernel Marc Eshel
2004-11-17 19:58 ` Steve Dickson [this message]
2004-11-18 16:52 ` Steve Dickson
2004-11-19 16:34 ` Trond Myklebust
2004-11-19 17:50 ` Steve Dickson
2004-11-19 20:24 ` Trond Myklebust
2004-11-19 20:27 ` Trond Myklebust
2004-11-19 21:40 ` Steve Dickson
2004-11-19 20:38 ` Steve Dickson
2004-11-23 0:45 ` unlock during lockd recovery Marc Eshel
2004-11-23 8:10 ` Olaf Kirch
2004-11-23 17:44 ` Marc Eshel
2004-11-24 8:59 ` Olaf Kirch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=419BAD59.80708@RedHat.com \
--to=steved@redhat.com \
--cc=NFS@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.