Subject: Re: poolifying fileassoc
To: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
From: Chuck Silvers <chuq@chuq.com>
List: tech-kern
Date: 10/09/2006 09:16:58
On Fri, Oct 06, 2006 at 09:54:56AM +0900, YAMAMOTO Takashi wrote:
> > On Thu, Oct 05, 2006 at 06:02:19AM -0700, Chuck Silvers wrote:
> > > 
> > > if a file is changed on an NFS server, the existing cached page on the
> > > NFS client is freed and a new page is allocated to hold the new file data.
> > > the new page will thus be checked again.  even if the same page were somehow
> > > reused, the point where it needs to be checked is when the page is initialized
> > > by reading from the NFS server, not when the page is found in the client's
> > > cache, and the aiodone path is a more appropriate place to do that.
> > > 
> > 
> > Unfortunately, the NFS code (and possibly other FS code - I have not
> > looked too far at the moment) does not call aiodone when it is
> > finished the i/o
> 
> nfs uses uvm_aio_aiodone, unless you are using nqnfs.
> well, it doesn't for sync i/o, but it's the same as ufs.
> 
> > - anything that used the genfs routines will be ok
> > but there is no requirement for the FS code to do so.
> 
> making it a requiremnt can be a choice, maybe.

I'd rather rearrange uvm_aio_aiodone() and genfs_getpages() to separate out
the code that's more or less duplicated between them.  then the new function
(which would be a uvm thing and not a genfs thing) would be the single place
to put pagecache I/O completion hooks like this.

-Chuck