From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Xin Zhao" Subject: Re: Urgent help needed on an NFS question, please help!!! Date: Thu, 10 Aug 2006 01:54:33 -0400 Message-ID: <4ae3c140608092254k62dce9at2e8cdcc9ae7a6d9f@mail.gmail.com> References: <4ae3c140608092204n1c07152k52010a10e209bb77@mail.gmail.com> <17626.49136.384370.284757@cse.unsw.edu.au> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: linux-kernel , linux-fsdevel@vger.kernel.org Return-path: Received: from py-out-1112.google.com ([64.233.166.181]:64858 "EHLO py-out-1112.google.com") by vger.kernel.org with ESMTP id S1161044AbWHJFye (ORCPT ); Thu, 10 Aug 2006 01:54:34 -0400 Received: by py-out-1112.google.com with SMTP id z74so681929pyg for ; Wed, 09 Aug 2006 22:54:33 -0700 (PDT) To: "Neil Brown" In-Reply-To: <17626.49136.384370.284757@cse.unsw.edu.au> Content-Disposition: inline Sender: linux-fsdevel-owner@vger.kernel.org List-Id: linux-fsdevel.vger.kernel.org Many thanks for your kind help! Your answer is what I expected. But what frustrated me is that I cannot find the code that verifies the generation number in NFS V3 codes. Do you know where it check the generation number? Thanks, -x On 8/10/06, Neil Brown 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 >