[PATCH] knfsd: set the response bitmask for NFS4_CREATE_EXCLUSIVE (repost)

Neil Brown neilb at suse.de
Wed Jun 27 17:26:45 EDT 2007


On Wednesday June 27, jlayton at redhat.com wrote:
> Haven't seen any comments on this patch so far. Neil, any thoughts?

I don't remember seeing it before, but that doesn't say much...
My thoughts:
 1/ I would like it to come to me through Bruce.
 2/ The comment is good, but seems to be asking for a matching comment
    in nfsd_create_v3.

NeilBrown

> 
> --------------[snip]--------------
> 
> RFC 3530 says:
> 
>  If the server uses an attribute to store the exclusive
>  create verifier, it will signify which attribute by setting the
>  appropriate bit in the attribute mask that is returned in the
>  results.
> 
> Linux uses the atime and mtime to store the verifier, but sends a zeroed out
> bitmask back to the client. This patch makes sure that we set the correct
> bits in the bitmask in this situation.
> 
> Signed-off-by: Jeff Layton <jlayton at redhat.com>
> 
> diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
> index 8522729..da20674 100644
> --- a/fs/nfsd/nfs4proc.c
> +++ b/fs/nfsd/nfs4proc.c
> @@ -99,7 +99,15 @@ do_open_lookup(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_o
>  		status = nfsd_create_v3(rqstp, current_fh, open->op_fname.data,
>  					open->op_fname.len, &open->op_iattr,
>  					&resfh, open->op_createmode,
> -					(u32 *)open->op_verf.data, &open->op_truncate, &created);
> +					(u32 *)open->op_verf.data,
> +					&open->op_truncate, &created);
> +
> +		/* If we ever decide to use different attrs to store the
> +		 * verifier in nfsd_create_v3, then we'll need to change this
> +		 */
> +		if (open->op_createmode == NFS4_CREATE_EXCLUSIVE && status == 0)
> +			open->op_bmval[1] |= (FATTR4_WORD1_TIME_ACCESS |
> +						FATTR4_WORD1_TIME_MODIFY);
>  	} else {
>  		status = nfsd_lookup(rqstp, current_fh,
>  				     open->op_fname.data, open->op_fname.len, &resfh);


More information about the NFSv4 mailing list