[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-nfs
Subject:    Re: [PATCH 3/3] lockd: reject reclaims outside the grace period
From:       "J. Bruce Fields" <bfields () fieldses ! org>
Date:       2008-09-30 15:59:35
Message-ID: 20080930155935.GA10405 () fieldses ! org
[Download RAW message or body]

On Mon, Sep 29, 2008 at 09:48:48PM -0700, Marc Eshel wrote:
> Unfortunately the application don't get notified when the reclaim failed. 

That depends on the client.  My understanding is that you're correct for
the Linux client, but that Solaris sends a signal?  Anyone know more, or
have suggestions about what we should do to fix the client?  I believe
that's a bug.

> Now you are making sure that application will fail because if they missed 
> the reclaim window they will not get the lock back and the application 
> will continue to run without a lock. Not sure this is better behavior.

Agreed that it's an unfortunate situation, but I think we have to do it.
The protocol requires it, and we owe this to clients who do make use of
the reclaim result somehow.

--b.

> Marc.
> 
> 
> linux-nfs-owner@vger.kernel.org wrote on 09/29/2008 07:44:03 PM:
> 
> > 
> > [PATCH 3/3] lockd: reject reclaims outside the grace period
> > 
> > The current lockd does not reject reclaims that arrive outside of the
> > grace period.
> > 
> > Accepting a reclaim means promising to the client that no conflicting
> > locks were granted since last it held the lock.  We can meet that
> > promise if we assume the only lockers are nfs clients, and that they are
> > sufficiently well-behaved to reclaim only locks that they held before,
> > and that only reclaim locks have been permitted so far.  Once we leave
> > the grace period (and start permitting non-reclaims), we can no longer
> > keep that promise.  So we must start rejecting reclaims at that point.
> > 
> > Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
> > ---
> >  fs/lockd/svclock.c |    4 ++++
> >  1 files changed, 4 insertions(+), 0 deletions(-)
> > 
> > diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c
> > index 808d246..6063a8e 100644
> > --- a/fs/lockd/svclock.c
> > +++ b/fs/lockd/svclock.c
> > @@ -410,6 +410,10 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct 
> > nlm_file *file,
> >        ret = nlm_lck_denied_grace_period;
> >        goto out;
> >     }
> > +   if (reclaim && !locks_in_grace()) {
> > +      ret = nlm_lck_denied_grace_period;
> > +      goto out;
> > +   }
> > 
> >     if (!wait)
> >        lock->fl.fl_flags &= ~FL_SLEEP;
> > -- 
> > 1.5.5.rc1
> > 
> > --
> > 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
> 
--
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
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic