[pnfs] [PATCH 0/38] [v1] pnfs: client layout cache

Dean Hildebrand seattleplus at gmail.com
Mon Jan 7 18:11:21 EST 2008


Great, thanks!
Dean

Labiaga, Ricardo wrote:
> One more thing, to get the contents do 
>    git fetch <name>
>
> To quote Bruce from an old email:
>
> "the git-remote stuff is very useful; together with git fetch it gives
> you a way of keeping a cached view of all the branches in any number of
> different repositories that you're interested in."
>
> - ricardo
>
>   
>> -----Original Message-----
>> From: Labiaga, Ricardo 
>> Sent: Monday, January 07, 2008 2:46 PM
>> To: Iyer, Rahul; Dean Hildebrand; Benny Halevy
>> Cc: pnfs at linux-nfs.org
>> Subject: Re: [pnfs] [PATCH 0/38] [v1] pnfs: client layout cache
>>
>> You should also be able to do:
>>    git remote add <name> git://linux-nfs.org/~bhalevy/linux-pnfs.git
>>
>> The remote branches will then appear under <name>/<name of the branch>
>>
>> - ricardo
>>
>>
>>     
>>> -----Original Message-----
>>> From: Iyer, Rahul 
>>> Sent: Monday, January 07, 2008 2:38 PM
>>> To: Dean Hildebrand; Benny Halevy
>>> Cc: pnfs at linux-nfs.org
>>> Subject: Re: [pnfs] [PATCH 0/38] [v1] pnfs: client layout cache
>>>
>>> Try 
>>> git branch -r 
>>> and you might see the other branches.
>>> Thanks,
>>> Rahul
>>>
>>>
>>>       
>>>> -----Original Message-----
>>>> From: Dean Hildebrand [mailto:seattleplus at gmail.com] 
>>>> Sent: Monday, January 07, 2008 2:35 PM
>>>> To: Benny Halevy
>>>> Cc: pnfs at linux-nfs.org
>>>> Subject: Re: [pnfs] [PATCH 0/38] [v1] pnfs: client layout cache
>>>>
>>>> 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
>>>>>   
>>>>>           
>>>> _______________________________________________
>>>> 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
>>>
>>>       
>> _______________________________________________
>> pNFS mailing list
>> pNFS at linux-nfs.org
>> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs
>>
>>     


More information about the pNFS mailing list