[pnfs] [PATCH 1/4] nfsd41: pass writable attrs mask to nfsd4_decode_fattr

Dean Hildebrand seattleplus at gmail.com
Mon May 12 16:46:50 EDT 2008



Benny Halevy wrote:
> On May. 12, 2008, 11:54 -0700, Dean Hildebrand <seattleplus at gmail.com> wrote:
>   
>> Benny Halevy wrote:
>>     
>>> In preparation for EXCLUSIVE4_1
>>>
>>> Signed-off-by: Benny Halevy <bhalevy at panasas.com>
>>> ---
>>>  fs/nfsd/nfs4xdr.c |   23 +++++++++++++++++------
>>>  1 files changed, 17 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
>>> index fcaac54..cc5f62d 100644
>>> --- a/fs/nfsd/nfs4xdr.c
>>> +++ b/fs/nfsd/nfs4xdr.c
>>> @@ -252,9 +252,14 @@ nfsd4_decode_bitmap(struct nfsd4_compoundargs *argp, u32 *bmval)
>>>  	DECODE_TAIL;
>>>  }
>>>  
>>> +static u32 nfsd_attrmask[] = {
>>> +	NFSD_WRITEABLE_ATTRS_WORD0,
>>> +	NFSD_WRITEABLE_ATTRS_WORD1
>>> +};
>>> +
>>>  static __be32
>>> -nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, struct iattr *iattr,
>>> -    struct nfs4_acl **acl)
>>> +nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, u32 *writable,
>>> +		   struct iattr *iattr, struct nfs4_acl **acl)
>>>   
>>>       
>>>  {
>>>  	int expected_len, len = 0;
>>>  	u32 dummy32;
>>> @@ -272,7 +277,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, struct iattr *ia
>>>  	 */
>>>  	if ((bmval[0] & ~NFSD_SUPPORTED_ATTRS_WORD0) || (bmval[1] & ~NFSD_SUPPORTED_ATTRS_WORD1))
>>>  		return nfserr_attrnotsupp;
>>> -	if ((bmval[0] & ~NFSD_WRITEABLE_ATTRS_WORD0) || (bmval[1] & ~NFSD_WRITEABLE_ATTRS_WORD1))
>>> +	if ((bmval[0] & ~writable[0]) || (bmval[1] & ~writable[1]))
>>>  		return nfserr_inval;
>>>  
>>>  	READ_BUF(4);
>>> @@ -503,7 +508,9 @@ nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create
>>>  	if ((status = check_filename(create->cr_name, create->cr_namelen, nfserr_inval)))
>>>  		return status;
>>>  
>>> -	if ((status = nfsd4_decode_fattr(argp, create->cr_bmval, &create->cr_iattr, &create->cr_acl)))
>>> +	status = nfsd4_decode_fattr(argp, create->cr_bmval, nfsd_attrmask,
>>> +				    &create->cr_iattr, &create->cr_acl);
>>> +	if (status)
>>>  		goto out;
>>>  
>>>  	DECODE_TAIL;
>>> @@ -666,7 +673,9 @@ nfsd4_decode_open(struct nfsd4_compoundargs *argp, struct nfsd4_open *open)
>>>  		switch (open->op_createmode) {
>>>  		case NFS4_CREATE_UNCHECKED:
>>>  		case NFS4_CREATE_GUARDED:
>>> -			if ((status = nfsd4_decode_fattr(argp, open->op_bmval, &open->op_iattr, &open->op_acl)))
>>> +			status = nfsd4_decode_fattr(argp, open->op_bmval,
>>> +				nfsd_attrmask, &open->op_iattr, &open->op_acl);
>>>   
>>>       
>> Does this line up properly once patched?
>>     
>
> Not really. It is indented in the "align right" flavor, otherwise
> each of the last 3 parameters would have to be on its own line.
>   
I'd prefer we keep all formatting constant, i.e., we do the same 
alignment on every printk, so I'd rather break the
args up onto their own lines.  I think in the case of the 2 bad options, 
that is the best for readability.  Unfortunately though, it does not 
seem there exists a hard and fast kernel formatting rule....
Dean
> Benny
>
>
>   
>> Dean
>>     
>>> +			if (status)
>>>  				goto out;
>>>  			break;
>>>  		case NFS4_CREATE_EXCLUSIVE:
>>> @@ -889,7 +898,9 @@ nfsd4_decode_setattr(struct nfsd4_compoundargs *argp, struct nfsd4_setattr *seta
>>>  	READ_BUF(sizeof(stateid_t));
>>>  	READ32(setattr->sa_stateid.si_generation);
>>>  	COPYMEM(&setattr->sa_stateid.si_opaque, sizeof(stateid_opaque_t));
>>> -	if ((status = nfsd4_decode_fattr(argp, setattr->sa_bmval, &setattr->sa_iattr, &setattr->sa_acl)))
>>> +	status = nfsd4_decode_fattr(argp, setattr->sa_bmval, nfsd_attrmask,
>>> +				    &setattr->sa_iattr, &setattr->sa_acl);
>>> +	if (status)
>>>  		goto out;
>>>  
>>>  	DECODE_TAIL;
>>>   
>>>       
>> _______________________________________________
>> pNFS mailing list
>> pNFS at linux-nfs.org
>> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs
>>     
>
>   


More information about the pNFS mailing list