Subject: Re: poolifying fileassoc
To: Chuck Silvers <chuq@chuq.com>
From: Brett Lymn <blymn@baesystems.com.au>
List: tech-kern
Date: 10/06/2006 10:04:35
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 - anything that used the genfs routines will be ok
but there is no requirement for the FS code to do so. As a quick test
hack I added the block verify to the nfs_dio_read() and it worked well
in picking up the backing store modifications on a NFS mount - I need
to work out the "correct" way of doing this as wedging the check into
FS depends code is not a good thing.
I had a look at biodone() but it is too late to be deciding the pages
are bad by then I think. I don't want to randomly call
uvm_aio_aiodone() as it performs a lot of other work that I am not
sure about.
--
Brett Lymn