[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