[pnfs] [PATCH 17/17] [SQUASHME] nfs41: optimize nfs41_setup_sequence for the minorversion 0 case

Benny Halevy bhalevy at panasas.com
Wed Jun 4 04:05:54 EDT 2008


On Jun. 04, 2008, 2:33 +0300, Ricardo Labiaga <ricardo.labiaga at netapp.com> wrote:
> Hi Benny,
> 
> I guess this is a matter of style.  Most of the minorversion decisions
> were coded using a switch to specifically call out the places dependent
> on minor version.  This would make it easy to deal with a new minor
> version in the future.  Having said that, it's going to be so long
> before that happens, that I really don't feel strongly either way.

Basically, I'd expect *and hope* that any minor version v > 1
will continue to use sessions, and exchange_id in particular.
For this we'd just need to change: BUG_ON(minorversion > v)

Benny

> 
> - ricardo
> 
> 
> On Tue, 2008-06-03 at 20:41 +0300, Benny Halevy wrote:
>> Signed-off-by: Benny Halevy <bhalevy at panasas.com>
>> ---
>>  fs/nfs/nfs4proc.c |   27 ++++++++++-----------------
>>  1 files changed, 10 insertions(+), 17 deletions(-)
>>
>> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
>> index d4cf831..fed52ea 100644
>> --- a/fs/nfs/nfs4proc.c
>> +++ b/fs/nfs/nfs4proc.c
>> @@ -435,26 +435,19 @@ int nfs4_setup_sequence(struct nfs_client *clp,
>>  
>>  	dprintk("--> %s clp %p session %p cl_minorversion %d\n",
>>  		__func__, clp, session, clp->cl_minorversion);
>> -	switch (clp->cl_minorversion) {
>> -	case 1:
>> -		if (nfs41_test_session_expired(session)) {
>> -			ret = nfs41_recover_session_sync(task->tk_client, clp,
>> -							 session);
>> -			if (ret)
>> -				break;
>> -		}
>> -		ret = nfs41_setup_sequence(session, args,
>> -				res, cache_reply, task);
>> -		break;
>> -	case 0:
>> -		break;
>> -	default:
>> -		BUG();
>> -	}
>>  
>> +	if (clp->cl_minorversion == 0)
>> +		goto out;
>> +	BUG_ON(clp->cl_minorversion != 1);
>> +	if (nfs41_test_session_expired(session))
>> +		ret = nfs41_recover_session_sync(task->tk_client, clp,
>> +						 session);
>> +	if (!ret)
>> +		ret = nfs41_setup_sequence(session, args, res,
>> +					    cache_reply, task);
>>  	if (ret)
>>  		memset(res, 0, sizeof(*res));
>> -
>> +out:
>>  	dprintk("<-- %s status=%d\n", __func__, ret);
>>  	return ret;
>>  }



More information about the pNFS mailing list