From: "J. Bruce Fields" <bfields@fieldses.org>
To: David Teigland <teigland@redhat.com>
Cc: linux-fsdevel@vger.kernel.org, nfs@lists.sourceforge.net,
Marc Eshel <eshel@almaden.ibm.com>
Subject: Re: [PATCH 10/10] gfs2: nfs lock support for gfs2
Date: Wed, 6 Dec 2006 16:23:47 -0500 [thread overview]
Message-ID: <20061206212347.GA25465@fieldses.org> (raw)
In-Reply-To: <20061206205822.GB25322@redhat.com>
On Wed, Dec 06, 2006 at 02:58:22PM -0600, David Teigland wrote:
> On Wed, Dec 06, 2006 at 02:57:22PM -0500, J. Bruce Fields wrote:
> > The more annoying problem is the need to cancel the GFS lock when
> > fl_notify fails; is that something that it's possible for GFS to do?
> >
> > It can fail because lockd has a timeout--it waits a few seconds for the
> > callback, then gives up and returns a failure to the user. If that
> > happens after your userspace posix lock manager acquires the lock (but
> > before fl_notify is called) then you've got to cancel it somehow.
>
> I'd think we could just send an unlock for it at that point. Set up an op
> with GDLM_PLOCK_OP_UNLOCK and the same fields as the lock you're removing
> and call send_op(). We probably need to flag this internal-unlock op so
> that when the result arrives, device_write() delists and frees it itself.
>
> (I wouldn't call this "canceling", I think of cancel as trying to force a
> blocked request to return/fail prematurely.)
I call it a cancel because it should leave us in the same state we were
in if we hadn't done the lock. An unlock doesn't do that, because the
original lock may have coalesced and/or downgraded existing locks.
We've got a similar problem with NFSv4 blocking locks. I've got
unsubmitted patches
http://linux-nfs.org/cgi-bin/gitweb.cgi?p=bfields-2.6.git;a=shortlog;h=fair-queueing
which introduce a new "provisional" lock type that is identical to a
posix lock in every way except that a provisional lock doesn't coalesce
or downgrade existing locks--it just sits there on the lock list
blocking conflicting requests until somebody comes along and upgrades it
to a real lock or cancels it.
Maybe there's a better solution in this case. I can't think of anything
other than just giving up on the whole idea of timing out. (Maybe that
wouldn't be so bad?)
--b.
next prev parent reply other threads:[~2006-12-06 21:23 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-06 5:34 asynchronous locks for cluster exports J. Bruce Fields
[not found] ` <8eb625184e6025f7f3d081dfe0a805abdd62a068.1165380892.git.bfields@citi.umich.edu>
2006-12-06 5:34 ` [PATCH 1/10] lockd: add new export operation for nfsv4/lockd locking J. Bruce Fields
2006-12-09 5:53 ` Wendy Cheng
2006-12-10 18:31 ` J. Bruce Fields
2006-12-06 5:34 ` J. Bruce Fields
[not found] ` <cc7b88076df17bb41ac5d536de174b44eda6b73c.1165380893.git.bfields@citi.umich.edu>
2006-12-06 5:34 ` [PATCH 2/10] nfsd4: Convert NFSv4 to new lock interface J. Bruce Fields
2006-12-06 5:34 ` J. Bruce Fields
[not found] ` <610c7d52f6363606200fa1016804e7116d580c36.1165380893.git.bfields@citi.umich.edu>
2006-12-06 5:34 ` [PATCH 3/10] lockd: request deferral routine J. Bruce Fields
2006-12-06 5:34 ` J. Bruce Fields
[not found] ` <665bfdae3a5b77bb7755f4735069b7188f815d89.1165380893.git.bfields@citi.umich.edu>
2006-12-06 5:34 ` [PATCH 4/10] locks: add fl_notify arguments J. Bruce Fields
2006-12-06 5:34 ` J. Bruce Fields
[not found] ` <e9e7fa0047137e5c988edaacc3dc70a84eb02efb.1165380893.git.bfields@citi.umich.edu>
2006-12-06 5:34 ` [PATCH 5/10] lockd: handle fl_notify callbacks J. Bruce Fields
2006-12-06 5:34 ` J. Bruce Fields
[not found] ` <b24eab1e47a44c1855d47d54b2858a7e5c2d4653.1165380893.git.bfields@citi.umich.edu>
2006-12-06 5:34 ` [PATCH 6/10] lockd: pass cookie in nlmsvc_testlock J. Bruce Fields
2006-12-06 5:34 ` J. Bruce Fields
[not found] ` <c214e0a0062abdbb72f0810c25ab7688e51b4dbd.1165380893.git.bfields@citi.umich.edu>
2006-12-06 5:34 ` [PATCH 7/10] lockd: handle test_lock deferrals J. Bruce Fields
2006-12-06 5:34 ` J. Bruce Fields
[not found] ` <aee338c430e7f0a9afe63ea80d0278b97b01eeee.1165380893.git.bfields@citi.umich.edu>
2006-12-06 5:34 ` [PATCH 8/10] lockd: always preallocate block in nlmsvc_lock() J. Bruce Fields
2006-12-06 5:34 ` J. Bruce Fields
[not found] ` <4fbe0004219a67cb6da4d1b3a1cfd16a9cb09ed7.1165380893.git.bfields@citi.umich.edu>
2006-12-06 5:34 ` [PATCH 9/10] lockd: add code to handle deferred lock requests J. Bruce Fields
2006-12-06 5:34 ` J. Bruce Fields
[not found] ` <70549752c06e54117024429649fd7aa813f21bec.1165380893.git.bfields@citi.umich.edu>
2006-12-06 5:34 ` [PATCH 10/10] gfs2: nfs lock support for gfs2 J. Bruce Fields
2006-12-06 6:00 ` [NFS] " Wendy Cheng
2006-12-06 13:26 ` Wendy Cheng
2006-12-06 5:34 ` J. Bruce Fields
2006-12-06 12:02 ` Steven Whitehouse
2006-12-06 15:49 ` David Teigland
2006-12-06 19:57 ` J. Bruce Fields
2006-12-06 20:08 ` [NFS] " J. Bruce Fields
2006-12-06 20:58 ` David Teigland
2006-12-06 21:23 ` J. Bruce Fields [this message]
2006-12-06 21:42 ` David Teigland
2006-12-06 22:00 ` [NFS] " J. Bruce Fields
2006-12-07 15:30 ` David Teigland
2006-12-08 17:35 ` [NFS] " J. Bruce Fields
2006-12-07 6:47 ` Marc Eshel
2006-12-07 15:23 ` J. Bruce Fields
2006-12-07 15:43 ` [NFS] " Marc Eshel
2006-12-07 16:21 ` J. Bruce Fields
2006-12-07 18:52 ` [NFS] " Trond Myklebust
2006-12-14 23:04 ` [PATCH 1/10] lockd: add new export operation for nfsv4/lockd locking J. Bruce Fields
2006-12-15 5:52 ` Marc Eshel
2006-12-15 7:40 ` Christoph Hellwig
2006-12-07 16:51 ` asynchronous locks for cluster exports Christoph Hellwig
2006-12-14 22:51 ` J. Bruce Fields
2006-12-15 19: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=20061206212347.GA25465@fieldses.org \
--to=bfields@fieldses.org \
--cc=eshel@almaden.ibm.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=nfs@lists.sourceforge.net \
--cc=teigland@redhat.com \
/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).