[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