Subject: Re: verified exec per page fingerprints
To: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
From: Brett Lymn <blymn@baesystems.com.au>
List: tech-kern
Date: 11/18/2005 11:20:41
On Fri, Nov 18, 2005 at 09:16:13AM +0900, YAMAMOTO Takashi wrote:
> 
> what's "block"?
> 

An overloaded term :)  In this case it is a one or more pages that are
being brought in by VOP_GETPAGES.

> +{
> +	error = VOP_GETATTR(vp, &va, curlwp->l_proc->p_ucred,
> +	    curlwp->l_proc);
> 
> VOP_GETATTR with holding pages busy is not safe with
> the current implementation of nfs client.
> 

OK - do we need to put a lock around this, or just unbusy the pages
while we check the attributes?

> 
> i don't think that pages can be PG_FAKE here.
> 

Yes, that was what I thought on the train this morning but removing
the PG_FAKE check caused my test process to get stuck in the D state,
having another look I may need to uvm_pagefree() the pages to properly
get rid of them.

> 
> async VOP_GETPAGES doesn't return pages.
> 

Yes, I know - at the moment things work mainly because it looks like
text pages are never brought in async.  I don't want to rely on that
always being true though.

> which is your intention?

Check pages when they are read in.  I previously had a look at this
but ran into difficulties working out how to get enough information to
be able to relate the async callback with a particular vnode so that
we could get the correct page fingerprints to check against.  I will
have another look at this as it may be easier with the improvements
that Elad has made.

-- 
Brett Lymn