From: "J. Bruce Fields" <bfields@fieldses.org>
To: Miklos Szeredi <mszeredi@suse.cz>
Cc: Frank van Maarseveen <frankvm@frankvm.com>,
Linux NFS mailing list <linux-nfs@vger.kernel.org>
Subject: Re: [NLM] 2.6.27 broken
Date: Thu, 5 Feb 2009 14:52:03 -0500 [thread overview]
Message-ID: <20090205195203.GD9200@fieldses.org> (raw)
In-Reply-To: <1233830829.4965.56.camel@tucsk>
On Thu, Feb 05, 2009 at 11:47:09AM +0100, Miklos Szeredi wrote:
> On Wed, 2009-02-04 at 18:33 -0500, J. Bruce Fields wrote:
> > On Tue, Dec 16, 2008 at 03:16:10PM -0500, bfields wrote:
> > > On Tue, Dec 16, 2008 at 08:43:52PM +0100, Miklos Szeredi wrote:
> > > > On Tue, 2008-12-16 at 12:39 -0500, J. Bruce Fields wrote:
> > > > > More precisely, it looks like this started with
> > > > >
> > > > > bde74e4bc64415b142e "locks: add special return value for
> > > > > asynchronous locks"
> > > > >
> > > > > But I haven't had the chance to look any harder yet. Miklos? Is this
> > > > > easy for you to reproduce?
> > > >
> > > > Not immediately, at the moment I don't have NFS set up. But if you
> > > > don't beat me to it, I'll look into this.
> > >
> > > OK, thanks. I'll take another look too when I get the chance, so let me
> > > know of any partial result.
> > >
> > > It may just for example be returning the wrong error to the client on an
> > > nlm blocking lock request, so that the client assumes the lock is gone
> > > and goes away rather than waiting for a grant request.
> >
> > Sorry, I've gotten a bit backlogged, but I finally got back to this. If
> > there's no objections, the following is what I intend to submit.
>
> OK (though I don't really understand why we make a lock request to the
> VFS _at all_ if we know the lock is already queued???).
I think you're right, we might be able to bypass the lock entirely in
that case, but we'd need to think about it carefully.
> But I think at least a comment in the code would be in order, or this
> same mistake might be made again. Also I think the original code flow
> is somewhat illogical.
Yeah, I was literally just reverting the problematic lines of your
previous commit. I'd rather keep it that way for now, just as a clear
separation between the revert/bugfix and the cleanup.
> How about this (it's essentially the same patch just a bit rearranged,
> the authorship is still yours of course ;)
... but would happily queue up the cleanup for 2.6.30.
Actually, I find it strange to have just that single case which breaks,
so that the code after the switch, which looks like it should be shared,
actually just applies to one case. I'd be inclined to just suck
everything up to "out:" into the -EAGAIN case and then make all cases
"goto out" (or, equivalently, break).
--b.
> Thanks,
> Miklos
>
> Index: linux-2.6/fs/lockd/svclock.c
> ===================================================================
> --- linux-2.6.orig/fs/lockd/svclock.c 2009-01-26 14:47:48.000000000 +0100
> +++ linux-2.6/fs/lockd/svclock.c 2009-02-05 11:42:20.000000000 +0100
> @@ -426,6 +426,13 @@ nlmsvc_lock(struct svc_rqst *rqstp, stru
> ret = nlm_granted;
> goto out;
> case -EAGAIN:
> + /*
> + * If this is a blocking request for an
> + * already pending lock request then we need
> + * to put it back on lockd's block list
> + */
> + if (wait)
> + break;
> ret = nlm_lck_denied;
> goto out;
> case FILE_LOCK_DEFERRED:
>
>
>
>
next prev parent reply other threads:[~2009-02-05 19:52 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-15 13:28 [NLM] 2.6.27 broken Frank van Maarseveen
2008-11-20 22:27 ` J. Bruce Fields
2008-11-28 11:24 ` Frank van Maarseveen
2008-12-16 17:39 ` J. Bruce Fields
2008-12-16 19:43 ` Miklos Szeredi
2008-12-16 20:16 ` J. Bruce Fields
2009-02-04 23:33 ` J. Bruce Fields
2009-02-05 10:21 ` Frank van Maarseveen
2009-02-05 19:52 ` J. Bruce Fields
2009-02-05 10:47 ` Miklos Szeredi
2009-02-05 19:52 ` J. Bruce Fields [this message]
2009-02-06 11:29 ` Miklos Szeredi
2009-02-09 18:10 ` J. Bruce Fields
2009-02-09 20:18 ` Miklos Szeredi
2009-02-09 20:51 ` J. Bruce Fields
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=20090205195203.GD9200@fieldses.org \
--to=bfields@fieldses.org \
--cc=frankvm@frankvm.com \
--cc=linux-nfs@vger.kernel.org \
--cc=mszeredi@suse.cz \
/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