All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chuck Lever <chuck.lever@oracle.com>
To: Bram Vandoren <brambi@gmail.com>
Cc: Rick Macklem <rmacklem@uoguelph.ca>,
	"J. Bruce Fields" <bfields@fieldses.org>,
	Linux NFS Mailing List <linux-nfs@vger.kernel.org>
Subject: Re: NFS client hangs after server reboot
Date: Fri, 12 Apr 2013 11:14:10 -0400	[thread overview]
Message-ID: <DC99B54B-3C48-49A6-B8C4-1410CA707734@oracle.com> (raw)
In-Reply-To: <CACQjR_CcKwHU8sMrmQ5YfgV5dbuiMLRRqBkDRQEVq2yjGEuzmg@mail.gmail.com>

Hi Bram-

I'm going to leave linux-nfs on the cc: line while we debug this.  If there is a privacy issue, you can send raw pcap files directly to us.  The mail archive does not save attachments, IIRC.


On Apr 12, 2013, at 5:26 AM, Bram Vandoren <brambi@gmail.com> wrote:

> Hi Rick, Chuck, Bruce,
> in attachment is a small pcap when a client is in the locked.
> Hopefully I can reproduce the problem so I can send you a capture
> during a reboot cycle.

The pcap file confirms that the state IDs and client ID do not appear to match, and do appear on the same TCP connection (in different operations).  I think the presence of the RENEW operations here suggest that the client believes it has not been able to renew its lease using stateful operations like READ.  IMO this is evidence in favor of the theory that the client neglected to recover these state IDs for some reason.

We'll need to see the actual reboot recovery traffic to analyze further, and that occurs just after the server reboots.  Even better would be to see the initial OPEN of the file where the READ operations are failing.  I recognize this is a non-determinstic problem that will be a challenge to capture properly.

Rather than capturing the trace on the server, you should be able to capture it on your clients in order to capture traffic before, during, and after the server reboot.  To avoid capturing an enormous amount of data, both tcpdump and tshark provide options to save the captured network data into a small ring of files (see their man pages).  Once a client mount point has locked, you can stop the capture, and hopefully the ring will have everything we need.



> 
> Thanks,
> Bram.
> 
> On Fri, Apr 12, 2013 at 11:19 AM, Bram Vandoren <brambi@gmail.com> wrote:
>>> Just to clarify/correct what I posted yesterday...
>>> The boot instance is the first 4 bytes of the clientid and the first
>>> 4 bytes of the stateid.other. (Basically, for the FreeBSD server, a
>>> stateid.other is just the clientid + 4 additional bytes that identify
>>> which stateid related to the clientid that it is.)
>>> 
>>> Those first 4 bytes should be the same for all clientids/stateid.others
>>> issued during a server boot cycle. Any clientid/stateid.other with a
>>> different first 4 bytes will get the NFS4ERR_STALE_CLIENTID/STATEID
>>> reply.
>> 
>> Thanks for the clarification. I tried to reproduce the problem using a
>> test setup but so far I didn't succeed. It's clearly not a problem
>> that happens all the time. Also not all the clients lock up in the
>> production system. Only a fraction of them (~ 1 in 10).
>> 
>> I checked the packets again. The Stateid in a read operation is:
>> 9a:b6:5d:51:bc:07:00:00:24:23:00:00
>> The client id:
>> af:c1:63:51:8b:01:00:00
>> 
>> It seems we ended up with a stale stateid but with a valid client id.
>> 
>> I am going to do some more tests with mutiple clients to try to
>> reproduce the problem. If that doesn't succeed I try to get the data
>> from the production server when we have to reboot it next time (but
>> this can take a while).
>> 
>> Thanks,
>> Bram

-- 
Chuck Lever
chuck[dot]lever[at]oracle[dot]com





  parent reply	other threads:[~2013-04-12 15:14 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-09 15:51 NFS client hangs after server reboot Bram Vandoren
2013-04-09 19:08 ` J. Bruce Fields
2013-04-10 19:33   ` Chuck Lever
2013-04-10 23:23     ` Rick Macklem
2013-04-11 23:15     ` Rick Macklem
2013-04-12  9:19       ` Bram Vandoren
2013-04-12 15:10         ` J. Bruce Fields
     [not found]         ` <CACQjR_CcKwHU8sMrmQ5YfgV5dbuiMLRRqBkDRQEVq2yjGEuzmg@mail.gmail.com>
2013-04-12 15:14           ` Chuck Lever [this message]
2013-05-28 12:31             ` Bram Vandoren
2013-05-28 19:23               ` Chuck Lever
2013-05-28 22:06                 ` Rick Macklem
2013-05-28 23:30               ` Rick Macklem
2013-05-29  1:04                 ` Chuck Lever
2013-05-29  1:13                   ` Chuck Lever
2013-05-29 12:49                     ` Rick Macklem
2013-05-30 11:09                       ` Bram Vandoren
2013-05-30  0:24                     ` Rick Macklem
2013-05-30  0:31                     ` Rick Macklem
2013-05-30 11:20                       ` Bram Vandoren
2013-05-30 11:04                   ` Bram Vandoren
2013-05-30 11:55                     ` Rick Macklem
2013-05-31 16:35                       ` Bram Vandoren
2013-05-31 23:24                         ` Rick Macklem
2013-08-28 13:39                           ` William Dauchy

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=DC99B54B-3C48-49A6-B8C4-1410CA707734@oracle.com \
    --to=chuck.lever@oracle.com \
    --cc=bfields@fieldses.org \
    --cc=brambi@gmail.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=rmacklem@uoguelph.ca \
    /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.