From: Tommi Virtanen <tommi.virtanen@dreamhost.com>
To: Sage Weil <sage@newdream.net>
Cc: Brian Chrisman <brchrisman@gmail.com>,
ceph-devel <ceph-devel@vger.kernel.org>
Subject: Re: Fixing NFS
Date: Thu, 3 Feb 2011 09:52:42 -0800 [thread overview]
Message-ID: <20110203175242.GA6348@dreamer> (raw)
In-Reply-To: <Pine.LNX.4.64.1102030917190.19855@cobra.newdream.net>
On Thu, Feb 03, 2011 at 09:29:32AM -0800, Sage Weil wrote:
> Which leaves us with a final problem: what if the fh is generated for
> /foo/bar, but bar is renamed to /baz/bar, bar drops out of all caches, and
> the client tries to use the fh. We're still stuck with ESTALE in that
> case. The only real solution there is to include a backpointer on the
> file's data object. This is doable, but comes at a cost. We could make
> it optional, and/or mitigate it somewhat (backpointer is only created once
> a file is renamed, or something like that).
>
> I'm not really sure to what lengths a server is supposed to go to avoid
> ESTALE. I seem to remember that NFSv4 has a different class of fh's that
> are allowed to expire. I'm not sure how that helps, though; it seems
> likeif a client has a file open that is renamed by another node and then
> idle for long enough and then tries to read it'll still be screwed,
> regardless of what the server does/does not promise the client.
NFSv4 volatile filehandles move away from the whole "stale"
terminology into "expiring" filehandles, which a client SHOULD recover
from, and that's said with fairly strong language in RFC3530. The
volatile filehandles may go away at any moment (for FH4_VOLATILE_ANY).
The RFC suggests clients remember the full path of every volatile
filehandle, and points out that doesn't let you recover if someone
else renamed the file.. which means your "final problem" above is
still a problem, and smells unavoidable. But at least shifting
responsibility for remembering the path to the client makes recovery
easy in the typical case.
If the real-world support is there, I'd say NFSv4 is the way to go,
for future Ceph re-exporting.
--
:(){ :|:&};:
next prev parent reply other threads:[~2011-02-03 17:52 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-03 17:05 Fixing NFS Brian Chrisman
2011-02-03 17:29 ` Sage Weil
2011-02-03 17:52 ` Tommi Virtanen [this message]
2011-02-08 1:51 ` Brian Chrisman
2011-02-08 2:06 ` Gregory Farnum
2011-02-08 3:35 ` Sage Weil
[not found] ` <AANLkTik0jz_RXbrLz2m=+EvBwpBwesQ_Lr_iiCuQJHyF@mail.gmail.com>
[not found] ` <Pine.LNX.4.64.1102072059260.16784@cobra.newdream.net>
2011-02-09 18:42 ` Brian Chrisman
2011-02-09 18:52 ` Sage Weil
2011-02-08 3:33 ` Sage Weil
2011-02-10 18:52 ` Brian Chrisman
2011-02-10 19:03 ` Sage Weil
2011-02-03 23:09 ` Hard links (was: Fixing NFS) Chris Dunlop
2011-02-03 23:16 ` Sage Weil
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=20110203175242.GA6348@dreamer \
--to=tommi.virtanen@dreamhost.com \
--cc=brchrisman@gmail.com \
--cc=ceph-devel@vger.kernel.org \
--cc=sage@newdream.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.