[pnfs] [PATCH 0/38] [v1] pnfs: client layout cache
Dean Hildebrand
seattleplus at gmail.com
Mon Jan 7 17:35:15 EST 2008
Not sure if this is my fault, but I just did a
>git clone git://linux-nfs.org/~bhalevy/linux-pnfs.git
and then the only branch I see is master:
>git branch
* master
Did I do something wrong? (git version 1.5.3.3)
Dean
Benny Halevy wrote:
> Seven updated patches and one new, based on (mostly Dean's) comments in replies
> to this email.
>
> Please get full updated patchset from git://linux-nfs.org/~bhalevy/linux-pnfs.git
> client-layout-cache branch, or use "git-remote update" if you've already
> cloned the tree.
>
> updated 0016-pnfs-allocate-layout-driver-data-in-one-piece-with.patch
> new 0017-pnfs-require-layout-driver-alloc-free-_layout.patch
> updated 0019-pnfs-client-layout-cache-introduce-get_alloc_layou.patch
> updated 0020-pnfs-client-layout-cache-allow-waiting-for-alloc_l.patch
> updated 0021-pnfs-client-layout-cache-get_lock-put_unlock-_cur.patch
> updated 0022-pnfs-client-layout-cache-unlock-layout-around-call.patch
> updated 0025-pnfs-client-layout-cache-require-layout-driver-al.patch
> updated 0038-pnfs-client-layout-cache-return_layout-use-pnfs_f.patch
>
> Benny
>
> On Jan. 01, 2008, 12:47 +0200, Benny Halevy <bhalevy at panasas.com> wrote:
>
>> This patchset contains some cleanups and bug fixes to the existing pnfs code.
>> Mainly support for non page cache I/O was removed since it's not used anywhere
>> at the moment. Rather than maintaining the dead code we rather add it back only
>> if/when needed.
>>
>> The client layout cache stores layout segments in a sorted list hung
>> from struct pnfs_layout_type.
>>
>> Allocation and deallocation of this structure was simplified allowing
>> the layout driver to easily allocate its private data in one chunk
>> immediately following the generic structure.
>>
>> Same principle was applied for layout segment allocation.
>>
>> New accessors help getting the LD private data, as well as "standard" pointers
>> (e.g. nfs_inode, nfs_server, etc.) derived from pnfs_layout_type (and
>> pnfs_layout_segment). This allows simplifying the LD API a bit by
>> passing it only the pnfs_layout_type without the inode.
>>
>> Layout driver is no longer responsible for maintaining layout segments
>> and it does not set the nfsi->current_layout to NULL when there's no
>> more layout information to keep. The pnfs layout cache is doing that
>> by keeping track of all layout segments and maintaining them in sync
>> with LAYOUTGETs and LAYOUTRETURNs.
>>
>> The LD read, write, (and later-on commit) methods now get the
>> layout segment covering the I/O byte range in the nfs_{read,write}_data
>> structure and it is freed on exit for synchronous I/O or in the
>> done function for the asynchronous paths.
>>
>> To simplify async done processing the layout drivers must always set
>> the rpc task.tk_status and result fields (count, eof for read, committed for
>> write) and then call back the pnfs nfs_{read,write}list_complete functions
>> that will call up the rpc_call_done chain. If the LD I/O function returns
>> synchronously, it still must set the fields mentioned above.
>>
>> I also added some basic synchronization and reference counting for allocating
>> and using layout cache structures. Higher level synchronization between layout
>> gets, returns, and recalls is still to be done.
>>
>> Benny
>>
>> _______________________________________________
>> pNFS mailing list
>> pNFS at linux-nfs.org
>> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs
>>
>>
>
> _______________________________________________
> pNFS mailing list
> pNFS at linux-nfs.org
> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs
>
More information about the pNFS
mailing list