[pnfs] [PATCH 19/20] 2.6-latest pnfs client no rpc nfs page cache cleanup

Benny Halevy bhalevy at panasas.com
Sun Dec 2 04:19:32 EST 2007


On Dec. 02, 2007, 10:17 +0200, Dean Hildebrand <seattleplus at gmail.com> wrote:
>>  	data->task.tk_status = status;
>>  	data->res.eof = eof;
>>  	data->res.count = status;
>> -	pnfs_readpage_result_norpc(&data->task, data);
>> -	nfs_readdata_release(data);
>> +
>> +	/* call the NFS cleanup routines. */
>> +	data->call_ops->rpc_call_done(&data->task, data);
>> +	data->call_ops->rpc_release(data);
>>  }
>>   
> I think Benny was hinting at this, and I'm not sure if I get it 
> completely yet, but it seems that the line above:
> 
> data->call_ops->rpc_call_done(&data->task, data);
> 
> evaluates to
> 
> pnfs4_read_done
> 
> which then exists immediately because PNFS_NO_RPC must be set. Is this 
> true?  If so, just remove the call to the function.
> 
> Dean

Sort of...  I'm not sure I see the big picture yet.
At the end of the day I would like to be able to use common infrastructure
for executing the I/O operations, even if the layout driver doesn't use 
rpc to perform the I/O.  For example, if I don't have the layout for
the whole range I would like to be able to execute what I can, return
the number of bytes actually done; or, in the async path, call the
callback which will derive that from the read/write data structure, and let
the upper layer function to iterate through the rest of the range, calling
virtual_update_layout for the residual range and the LD's {read,write}_pages
method appropriately.

Benny


More information about the pNFS mailing list