[pnfs] Fwd: [PATCH 0/14] linux-pnfs-2.6-latest pNFS client read I/O - Draft 13

Benny Halevy bhalevy at panasas.com
Thu Nov 15 13:22:51 EST 2007


On Nov. 15, 2007, 19:51 +0200, "William A. (Andy) Adamson" <andros at citi.umich.edu> wrote:
> ummm! i didn't 'cc the list!!!!
> 
> 
> ---------- Forwarded message ----------
> From: William A. (Andy) Adamson <andros at citi.umich.edu>
> Date: Nov 15, 2007 12:38 PM
> Subject: Re: [pnfs] [PATCH 0/14] linux-pnfs-2.6-latest pNFS client
> read I/O - Draft 13
> To: Benny Halevy <bhalevy at panasas.com>
> 
> 
> On Nov 15, 2007 6:12 AM, Benny Halevy <bhalevy at panasas.com> wrote:
>> On Nov. 14, 2007, 19:23 +0200, Trond Myklebust <trond.myklebust at fys.uio.no> wrote:
>>> On Wed, 2007-11-14 at 12:11 -0500, William A. (Andy) Adamson wrote:
>>>
>>>> for example in fs/nfs/read.c: nfs_read_rpcsetup()
>>>>
>>>> ifdef CONFIG_PNFS
>>>>         /* XXX pnfs_try_to_read_data should never return an error less than 0.
>>>>         * ret == 0 means pnfs read succees.
>>>>         * ret == 1 means do an NFSv4.1 read to the MDS.
>>>>         */
>>>>         if ((pnfs_try_to_read_data(data, call_ops)) <= 0)
>>>>                 return;
>>>> #endif /* CONFIG_PNFS*/
>>>>
>>>>         nfs_initiate_read(data, NFS_CLIENT(inode), call_ops);
>>>> }
>>> The above is a seriously brilliant comment! Are we perhaps missing a
>>> BUG_ON() there?
>> Actually, I think it's just wrong.
>>> 0 means do MDS read
>> = 0 means success
>> < 0 means pnfs_readpages failed and returned an error
>>   in this case the 2.6.18.3 code base returned an error from nfs_read_rpcsetup
>>   which is sort of legitimate (not that I like doing the I/O form within
>>   nfs_read_rpcsetup, but that's a separate issue)
>>   in the future we will want to retry the I/O via the MDS.
> 
> the future is now! a failure from pnfs_try_to_read means try via the
> MDS. there is no reason to put this off any longer.  the 2.6.18.3 code
> is wrong.
> 
>> Anyhow, this is a good example why having a thorough process for porting
>> the patches is so important.  Making changes in the porting process is
>> inevitable since the environment changed (a lot), however changing the
>> functionality and/or fixing bugs (or what we think are bugs) in the
>> process is quite risky.
> 
> this is a bug. there is no reason to propagate bugs. instead, i

sorry, I disagree.  Returning an error to the app or data server error
is not a bug.  It's sub-optimal but it's a correct behavior.

> propose that in the "porting process" we take the time to improve the
> code and handle all the issues that we have ignored in order to get a

Andy, really I'm not just trying to be stubborn.  I carry my scars of trying
to make more than one change at a time and that is just error-prone.
I'm not asking to port bugs, but rather to postpone any improvement
until after the porting of all existing functionality is done.

> prototype. the 2.6.18.3 code does not many error cases. the 2.6-latest
> code should.
> 
>> I tried pulling the changes from linux-pnfs to linux-pnfs-2.6
>> in order to establish a depot for the patches we they can be manipulated
>> more easily in git by resetting a branch in linux-pnfs-2.6 to v2.6.18
>> which is a common ancestor of both trees. This went ok, but attempting
>> to rebase the patchset onto a more recent point went horribly wrong.
>>
>> Basically every merge point in which sessions patches were pushed to
>> the master branch presented conflicts when trying to do the rebase and
>> the merge has to be replayed (and since we didn't enabled rerere there
>> doesn't seem to be an easy way to do that since git-show of the merge
>> commit is insufficient to resolve the merge conflict.  Is there
>> an easy way to do this with git that I'm not aware of?
> 
> there is no reason to worry about this. the 2.6.18.3 code is no good.
> it gave us experience - fine. but it has glaring problems that should
> be fixed, not propoagated.

one question still, how can you make sure nothing was dropped along the way?

> 
>> After discussing this with Boaz we came to the conclusion that
>> using rebase rather than merge should do a better job in integrating
>> the pnfs patches on top of the sessions patches as the each committed
>> patch after the rebase will be in sync with the branch so I'm going to
>> retry this by applying the sessions patches onto a 2.6.18.3 branch
>> (off of linux-pnfs-2.6) and having a sub-branch of that for the pnfs-patches
>> which I'll rebase at the merge points we have in the 2.6.18.3 tree so that
>> we'll have a coherent set of patches to play with.
> 
> i disagree with a merge. if you want all the bugs, use 2.6.18.3.

I just tried that as a technique to bring the original patches into
a branch of the new tree (which is based off of v2.6.18 to start with)
just for reference.

> 
> -->Andy
> 
> 
>> Benny
>>
>>> Trond
>>>
>>
>> --
>> Benny Halevy
>> Software Architect
>> Tel/Fax: +972-3-647-8340
>> Mobile: +972-54-802-8340
>> US:      +1-412-203-3187
>> bhalevy at panasas.com
>>
>> Panasas, Inc.
>> Leader in Parallel Storage
>> www.panasas.com
>>
>>
> _______________________________________________
> pNFS mailing list
> pNFS at linux-nfs.org
> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs



More information about the pNFS mailing list