From: "Xin Zhao" <uszhaoxin@gmail.com>
To: "Neil Brown" <neilb@suse.de>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
linux-fsdevel@vger.kernel.org
Subject: Re: Urgent help needed on an NFS question, please help!!!
Date: Thu, 10 Aug 2006 02:15:57 -0400 [thread overview]
Message-ID: <4ae3c140608092315g3bedad97s33e8fac59a44a41@mail.gmail.com> (raw)
In-Reply-To: <4ae3c140608092304p5d3b0a83r186ebe5466369189@mail.gmail.com>
I found where the server checks the generation number. It's in fh_verify(). :)
Many thanks for your help, Neil!
-x
On 8/10/06, Xin Zhao <uszhaoxin@gmail.com> wrote:
> I think nfs_compare_fh() might do the file handle verification task.
> However, it is still possible that AFTER C1 gets a valid file handle,
> BUT BEFORE C1 sends out the getattr() request, C2 deletes file X and
> creates a different file X1 which has the same inode number. Looks
> like the server side must verify the generation number carried in the
> file handle. Unfortunately, I didn't find this code at the server
> side. Any further insight on this?
>
> Thanks,
> Xin
>
> On 8/10/06, Neil Brown <neilb@suse.de> wrote:
> > On Thursday August 10, uszhaoxin@gmail.com wrote:
> > > I just ran into a problem about NFS. It might be a fundmental problem
> > > of my current work. So please help!
> > >
> > > I am wondering how NFS guarantees a client didn't get wrong file
> > > attributes. Consider the following scenario:
> > >
> > > Suppose we have an NFS server S and two clients C1 and C2.
> > >
> > > Now C1 needs to access the file attributes of file X, it first does
> > > lookup() to get the file handle of file X.
> > >
> > > After C1 gets X's file handle and before C1 issues the getattr()
> > > request, C2 cuts in. Now C2 deletes file X and creates a new file X1,
> > > which has different name but the same inode number and device ID as
> > > the nonexistent file X.
> > >
> > > When C1 issues getattr() with the old file handle, it may get file
> > > attribute on wrong file X1. Is this true?
> > >
> > > If not, how NFS avoid this problem? Please direct me to the code that
> > > verifies this.
> >
> > Generation numbers.
> >
> > When the filesystem creates a new file it assigns a random number
> > as the 'generation' number and stores that in the inode.
> > This gets included in the filehandle, and checked when the filehandle
> > lookup is done.
> >
> > Look for references to 'i_generation' in fs/ext3/*
> >
> > Other files systems may approach this slightly differently, but the
> > filesystem is responsible for providing a unique-over-time filehandle,
> > and 'generation number' is the 'standard' way of doing this.
> >
> > NeilBrown
> >
>
prev parent reply other threads:[~2006-08-10 6:15 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-10 5:04 Urgent help needed on an NFS question, please help!!! Xin Zhao
2006-08-10 5:11 ` Neil Brown
2006-08-10 5:54 ` Xin Zhao
2006-08-10 6:03 ` Neil Brown
2006-08-10 15:15 ` Xin Zhao
2006-08-10 16:11 ` Matthew Wilcox
2006-08-10 16:23 ` Xin Zhao
2006-08-10 16:54 ` Matthew Wilcox
2006-08-10 17:08 ` Xin Zhao
2006-08-10 17:38 ` Trond Myklebust
2006-08-10 17:28 ` Trond Myklebust
2006-08-10 18:02 ` Xin Zhao
2006-08-10 19:59 ` Trond Myklebust
2006-08-10 22:25 ` Xin Zhao
2006-08-11 0:44 ` Trond Myklebust
2006-08-10 22:28 ` Xin Zhao
2006-08-11 0:38 ` Trond Myklebust
2006-08-10 23:42 ` Bryan Henderson
2006-08-10 17:50 ` Bryan Henderson
2006-08-10 18:15 ` Xin Zhao
2006-08-11 0:07 ` Bryan Henderson
2006-08-10 21:00 ` Peter Staubach
2006-08-10 6:04 ` Xin Zhao
2006-08-10 6:15 ` Xin Zhao [this message]
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=4ae3c140608092315g3bedad97s33e8fac59a44a41@mail.gmail.com \
--to=uszhaoxin@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=neilb@suse.de \
/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).