linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "J. Bruce Fields" <bfields@fieldses.org>
To: Jeff Layton <jlayton@redhat.com>
Cc: misch@schwartzkopff.org,
	"linux-nfs@vger.kernel.org" <linux-nfs@vger.kernel.org>
Subject: Re: NFSv4 grace time
Date: Fri, 22 Jul 2011 13:16:05 -0400	[thread overview]
Message-ID: <20110722171605.GC7670@fieldses.org> (raw)
In-Reply-To: <20110722074108.2213498d@tlielax.poochiereds.net>

On Fri, Jul 22, 2011 at 07:41:08AM -0400, Jeff Layton wrote:
> On Fri, 22 Jul 2011 13:24:22 +0200
> Michael Schwartzkopff <misch@schwartzkopff.org> wrote:
> 
> > > On Thu, 21 Jul 2011 15:40:05 +0200
> > > 
> > > Michael Schwartzkopff <misch@schwartzkopff.org> wrote:
> > > > Hi,
> > > > 
> > > > setting up a linux NFS server cluster I experience a strange problem
> > > > during a failover. A client can access a file only after 60 to 90
> > > > seconds. On the line I see a NFS4ERR_GRACE from the server to the
> > > > client.
> > > > 
> > > > I already set the /proc/fs/nfsd/nfsv4leastime to 10.
> > > > 
> > > > Any other idea?
> > > > 
> > > > For the tests I have a simple setup:
> > > > 
> > > > One host with a simple script that simulates failover:
> > > > 
> > > > #!/bin/bash
> > > > 
> > > > ip a d 1.2.3.4/24 dev eth0
> > > > exportfs -u *:/srv/nfs/home
> > > > exportfs -u *:/srv/nfs
> > > > /etc/init.d/nfsserver stop
> > > > #
> > > > /etc/init.d/nfsserver start
> > > > exportfs -o fsid=0,rw,crossmnt,no_root_squash *:/srv/nfs
> > > > exportfs -o fsid=1000,rw,mountpoint,no_root_squash *:/srv/nfs/home
> > > > ip a a 1.2.3.4/24 dev eth0
> > > 
> > > This is normal. The grace period is there to allow clients to reclaim
> > > their state without other clients racing in and grabbing their locks on
> > > the new server, etc.
> > 
> > Ok. But this is the same client that cannot its own data.
> >  
> 
> That may be the case in your situation, but the protocol has to allow for that.

We could be a bit smarter here:

	- Use the NFSv4.1 RECLAIM_COMPLETE to identify when all clients
	  have reclaimed state, if possible.
	- Skip the grace period when we *know* no clients held open
	  state on the previous boot.  (But we'd have to think about
	  v2/v3 clients: the kernel doesn't know about them.  Possibly
	  we can assume they don't use share locks, hence don't need to
	  wait on them for v4 opens.  But we *do* actually have share lock
	  procedures in NLM--I wonder if anyone uses them?  They aren't
	  consistent with v4 opens, argh.)

> > > You can play with /proc/fs/nfsd/nfsv4gracetime too but I'd be very
> > > leery of setting that too low. It should never be lower than the
> > > previous leasetime (see the comments on write_gracetime in the kernel).
> > 
> > I did already set this to 10 seconds without success. The client still has to 
> > wait 60 seconds to access its data.
> > 
> 
> You may need to restart the server and remount the clients in order for it to work.

Note /proc/sys/fs/nfs/nlm_grace_period needs to be shrunk too.

--b.

> 
> > By the way: Is there a nice way to set this during startup of the nfsserver, 
> > i.e. a mount option for nfsd?
> > 
> 
> Not currently, but a module parm for this would seem to make more sense
> than this file in /proc.
> 
> -- 
> Jeff Layton <jlayton@redhat.com>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

      reply	other threads:[~2011-07-22 17:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-21 13:40 NFSv4 grace time Michael Schwartzkopff
2011-07-22 11:07 ` Jeff Layton
2011-07-22 11:24   ` Michael Schwartzkopff
2011-07-22 11:41     ` Jeff Layton
2011-07-22 17:16       ` J. Bruce Fields [this message]

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=20110722171605.GC7670@fieldses.org \
    --to=bfields@fieldses.org \
    --cc=jlayton@redhat.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=misch@schwartzkopff.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).