From: "J. Bruce Fields" <bfields@fieldses.org>
To: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Namjae Jeon <linkinjeon@gmail.com>,
"Steven J. Magnani" <steve@digidescorp.com>,
Al Viro <viro@zeniv.linux.org.uk>,
akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
Namjae Jeon <namjae.jeon@samsung.com>,
Ravishankar N <ravi.n1@samsung.com>,
Amit Sahrawat <a.sahrawat@samsung.com>
Subject: Re: [PATCH v2 1/5] fat: allocate persistent inode numbers
Date: Wed, 12 Sep 2012 13:11:28 -0400 [thread overview]
Message-ID: <20120912171128.GG3009@fieldses.org> (raw)
In-Reply-To: <87vcfjfa14.fsf@devron.myhome.or.jp>
On Thu, Sep 13, 2012 at 02:03:51AM +0900, OGAWA Hirofumi wrote:
> "J. Bruce Fields" <bfields@fieldses.org> writes:
>
> >> > Supposing, the server/client state is after cold boot, and client try to
> >> > rename at first without any cache on client/server.
> >> >
> >> > Even if this state, does the server return ESTALE? If it doesn't return
> >> > ESTALE, I can't understand why it is really unfixable.
> >> Hi OGAWA.
> >> Server will not return ESTALE in this case. because the client does
> >> not have any information for files yet.
> >
> > It does if the client mounted before the server rebooted. NFS is
> > designed so that servers can reboot without causing clients to fail.
> > (Applications will just see a delay during the reboot.)
> >
> > It probably isn't possible to this work in the case of fat.
> >
> > But from fat's point of view there probably isn't much difference
> > between a filehandle lookup after a reboot and a filehandle lookup after
> > the inode's gone from cache.
>
> This is talking about to retry by client side, not server side solution.
> What happens if client retry after got ESTALE? (Yes, this would not be
> the solution for all NFS clients. But, I guess this solution can be for
> linux NFS client.)
>
> > I really don't see what you can do to help here. Won't anything that
> > allows looking up an uncached inode by filehandle also risk finding the
> > wrong file?
>
> On other view (as server side solution), we are thinking there is
> possible to make the stable filehandle on FAT if we disabled some
> operations (e.g. rename(), unlink()) which change inode location in FAT.
>
> Yes, it would be stable, but supporting limited operations.
>
> This is server side solution, and we comparing it with client solution.
Is that useful to anyone?
> >> > If it returns ESTALE, why does it return? I'm assuming the previous code
> >> > path is the cached FH path.
> >> The main point for observation is the file handle-which is used for
> >> all the NFS operation.
> >> So for all the NFS operation(read/write....) which makes use of the
> >> NFS file handle in between if there is a change in inode number
> >> It will result in ESTALE.
> >> Changing inode number on rename happened at NFS server by inode cache
> >> eviction with memory pressure.
> >>
> >> lookupcache is used at NFS client to reduce number of LOOKUP operations.
> >> But , we can still get ESTALE if inode number at NFS Server change
> >> after LOOKUP, although lookupcache is disable.
> >>
> >> LOOKUP return NFS FH->[inode number changed at NFS Server] ->
> >> But we still use old NFS FH returned from LOOKUP for any file
> >> operation(write,read,etc..)
> >> -> ESTALE will be returned.
>
> Yes. And I'm expecting as client side solution,
>
> -> ESTALE will be returned -> discard old FH -> restart from LOOKUP ->
> make cached inode -> use returned new FH.
>
> Yeah, I know this is unstable (there is no perfect solution for now),
You may end up with a totally different file, of course:
client: server:
open "/foo/bar"
rename "/foo/baz"->"/foo/bar"
write to file
And now we're writing to the file that was originally named /foo/baz
when we should have gotten ESTALE.
--b.
> but if this works, this doesn't limit any operations.
>
> We would want to compare client solution (-mm) and server solution
> (stable ino). Or I'd like to know which my knowledges/understanding are
> wrong here.
> --
> OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
next prev parent reply other threads:[~2012-09-12 17:12 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-04 15:57 [PATCH v2 1/5] fat: allocate persistent inode numbers Namjae Jeon
2012-09-04 16:17 ` Al Viro
2012-09-05 14:08 ` Namjae Jeon
2012-09-05 14:56 ` OGAWA Hirofumi
2012-09-06 6:46 ` Namjae Jeon
2012-09-06 12:19 ` OGAWA Hirofumi
2012-09-06 13:39 ` Namjae Jeon
2012-09-07 7:01 ` Namjae Jeon
2012-09-07 12:15 ` Steven J. Magnani
2012-09-09 9:32 ` OGAWA Hirofumi
2012-09-09 11:29 ` OGAWA Hirofumi
2012-09-10 12:03 ` Namjae Jeon
2012-09-10 14:00 ` OGAWA Hirofumi
2012-09-11 12:00 ` Namjae Jeon
2012-09-11 12:31 ` OGAWA Hirofumi
2012-09-11 15:13 ` Namjae Jeon
2012-09-11 15:47 ` OGAWA Hirofumi
2012-09-12 14:12 ` Namjae Jeon
2012-09-12 14:32 ` J. Bruce Fields
2012-09-12 17:03 ` OGAWA Hirofumi
2012-09-12 17:11 ` J. Bruce Fields [this message]
2012-09-12 17:38 ` OGAWA Hirofumi
2012-09-12 17:45 ` J. Bruce Fields
2012-09-12 18:49 ` OGAWA Hirofumi
2012-09-13 8:11 ` Namjae Jeon
2012-09-13 8:33 ` OGAWA Hirofumi
2012-09-13 11:20 ` J. Bruce Fields
2012-09-13 12:17 ` OGAWA Hirofumi
2012-09-13 14:24 ` Namjae Jeon
2012-09-13 14:46 ` J. Bruce Fields
2012-09-13 15:34 ` OGAWA Hirofumi
2012-09-14 8:51 ` Namjae Jeon
2012-09-10 12:28 ` Steven J. Magnani
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=20120912171128.GG3009@fieldses.org \
--to=bfields@fieldses.org \
--cc=a.sahrawat@samsung.com \
--cc=akpm@linux-foundation.org \
--cc=hirofumi@mail.parknet.co.jp \
--cc=linkinjeon@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=namjae.jeon@samsung.com \
--cc=ravi.n1@samsung.com \
--cc=steve@digidescorp.com \
--cc=viro@zeniv.linux.org.uk \
/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.