[pnfs] [PATCH 6/8] nfsd: dprint operation names

J. Bruce Fields bfields at fieldses.org
Tue Jul 1 15:46:26 EDT 2008


On Tue, Jul 01, 2008 at 04:47:37PM +0300, Benny Halevy wrote:
> This turned out to be quite nice.
> See following patch.
> And thanks for your comments!

Thanks, that looks OK.  Would it be a problem to resend the series?

--b.

> 
> Benny
> 
> diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
> index f3226c0..e9d41f8 100644
> --- a/fs/nfsd/nfs4proc.c
> +++ b/fs/nfsd/nfs4proc.c
> @@ -843,10 +843,13 @@ struct nfsd4_operation {
>  #define ALLOWED_WITHOUT_FH 1
>  /* GETATTR and ops not listed as returning NFS4ERR_MOVED: */
>  #define ALLOWED_ON_ABSENT_FS 2
> +	char *op_name;
>  };
>  
>  static struct nfsd4_operation nfsd4_ops[];
>  
> +static inline char *nfsd4_op_name(unsigned opnum);
> +
>  /*
>   * COMPOUND call.
>   */
> @@ -888,7 +891,9 @@ nfsd4_proc_compound(struct svc_rqst *rqstp,
>  	while (!status && resp->opcnt < args->opcnt) {
>  		op = &args->ops[resp->opcnt++];
>  
> -		dprintk("nfsv4 compound op #%d: %d\n", resp->opcnt, op->opnum);
> +		dprintk("nfsv4 compound op #%d/%d: %d (%s)\n",
> +			resp->opcnt, args->opcnt, op->opnum,
> +			nfsd4_op_name(op->opnum));
>  
>  		/*
>  		 * The XDR decode routines may have pre-set op->status;
> @@ -963,120 +968,163 @@ out:
>  static struct nfsd4_operation nfsd4_ops[OP_RELEASE_LOCKOWNER+1] = {
>  	[OP_ACCESS] = {
>  		.op_func = (nfsd4op_func)nfsd4_access,
> +		.op_name = "OP_ACCESS",
>  	},
>  	[OP_CLOSE] = {
>  		.op_func = (nfsd4op_func)nfsd4_close,
> +		.op_name = "OP_CLOSE",
>  	},
>  	[OP_COMMIT] = {
>  		.op_func = (nfsd4op_func)nfsd4_commit,
> +		.op_name = "OP_COMMIT",
>  	},
>  	[OP_CREATE] = {
>  		.op_func = (nfsd4op_func)nfsd4_create,
> +		.op_name = "OP_CREATE",
>  	},
>  	[OP_DELEGRETURN] = {
>  		.op_func = (nfsd4op_func)nfsd4_delegreturn,
> +		.op_name = "OP_DELEGRETURN",
>  	},
>  	[OP_GETATTR] = {
>  		.op_func = (nfsd4op_func)nfsd4_getattr,
>  		.op_flags = ALLOWED_ON_ABSENT_FS,
> +		.op_name = "OP_GETATTR",
>  	},
>  	[OP_GETFH] = {
>  		.op_func = (nfsd4op_func)nfsd4_getfh,
> +		.op_name = "OP_GETFH",
>  	},
>  	[OP_LINK] = {
>  		.op_func = (nfsd4op_func)nfsd4_link,
> +		.op_name = "OP_LINK",
>  	},
>  	[OP_LOCK] = {
>  		.op_func = (nfsd4op_func)nfsd4_lock,
> +		.op_name = "OP_LOCK",
>  	},
>  	[OP_LOCKT] = {
>  		.op_func = (nfsd4op_func)nfsd4_lockt,
> +		.op_name = "OP_LOCKT",
>  	},
>  	[OP_LOCKU] = {
>  		.op_func = (nfsd4op_func)nfsd4_locku,
> +		.op_name = "OP_LOCKU",
>  	},
>  	[OP_LOOKUP] = {
>  		.op_func = (nfsd4op_func)nfsd4_lookup,
> +		.op_name = "OP_LOOKUP",
>  	},
>  	[OP_LOOKUPP] = {
>  		.op_func = (nfsd4op_func)nfsd4_lookupp,
> +		.op_name = "OP_LOOKUPP",
>  	},
>  	[OP_NVERIFY] = {
>  		.op_func = (nfsd4op_func)nfsd4_nverify,
> +		.op_name = "OP_NVERIFY",
>  	},
>  	[OP_OPEN] = {
>  		.op_func = (nfsd4op_func)nfsd4_open,
> +		.op_name = "OP_OPEN",
>  	},
>  	[OP_OPEN_CONFIRM] = {
>  		.op_func = (nfsd4op_func)nfsd4_open_confirm,
> +		.op_name = "OP_OPEN_CONFIRM",
>  	},
>  	[OP_OPEN_DOWNGRADE] = {
>  		.op_func = (nfsd4op_func)nfsd4_open_downgrade,
> +		.op_name = "OP_OPEN_DOWNGRADE",
>  	},
>  	[OP_PUTFH] = {
>  		.op_func = (nfsd4op_func)nfsd4_putfh,
>  		.op_flags = ALLOWED_WITHOUT_FH | ALLOWED_ON_ABSENT_FS,
> +		.op_name = "OP_PUTFH",
>  	},
>  	[OP_PUTPUBFH] = {
> -		/* unsupported; just for future reference: */
> +		/* unsupported, just for future reference: */
>  		.op_flags = ALLOWED_WITHOUT_FH | ALLOWED_ON_ABSENT_FS,
> +		.op_name = "OP_PUTPUBFH",
>  	},
>  	[OP_PUTROOTFH] = {
>  		.op_func = (nfsd4op_func)nfsd4_putrootfh,
>  		.op_flags = ALLOWED_WITHOUT_FH | ALLOWED_ON_ABSENT_FS,
> +		.op_name = "OP_PUTROOTFH",
>  	},
>  	[OP_READ] = {
>  		.op_func = (nfsd4op_func)nfsd4_read,
> +		.op_name = "OP_READ",
>  	},
>  	[OP_READDIR] = {
>  		.op_func = (nfsd4op_func)nfsd4_readdir,
> +		.op_name = "OP_READDIR",
>  	},
>  	[OP_READLINK] = {
>  		.op_func = (nfsd4op_func)nfsd4_readlink,
> +		.op_name = "OP_READLINK",
>  	},
>  	[OP_REMOVE] = {
>  		.op_func = (nfsd4op_func)nfsd4_remove,
> +		.op_name = "OP_REMOVE",
>  	},
>  	[OP_RENAME] = {
> +		.op_name = "OP_RENAME",
>  		.op_func = (nfsd4op_func)nfsd4_rename,
>  	},
>  	[OP_RENEW] = {
>  		.op_func = (nfsd4op_func)nfsd4_renew,
>  		.op_flags = ALLOWED_WITHOUT_FH | ALLOWED_ON_ABSENT_FS,
> +		.op_name = "OP_RENEW",
>  	},
>  	[OP_RESTOREFH] = {
>  		.op_func = (nfsd4op_func)nfsd4_restorefh,
>  		.op_flags = ALLOWED_WITHOUT_FH | ALLOWED_ON_ABSENT_FS,
> +		.op_name = "OP_RESTOREFH",
>  	},
>  	[OP_SAVEFH] = {
>  		.op_func = (nfsd4op_func)nfsd4_savefh,
> +		.op_name = "OP_SAVEFH",
>  	},
>  	[OP_SECINFO] = {
>  		.op_func = (nfsd4op_func)nfsd4_secinfo,
> +		.op_name = "OP_SECINFO",
>  	},
>  	[OP_SETATTR] = {
>  		.op_func = (nfsd4op_func)nfsd4_setattr,
> +		.op_name = "OP_SETATTR",
>  	},
>  	[OP_SETCLIENTID] = {
>  		.op_func = (nfsd4op_func)nfsd4_setclientid,
>  		.op_flags = ALLOWED_WITHOUT_FH | ALLOWED_ON_ABSENT_FS,
> +		.op_name = "OP_SETCLIENTID",
>  	},
>  	[OP_SETCLIENTID_CONFIRM] = {
>  		.op_func = (nfsd4op_func)nfsd4_setclientid_confirm,
>  		.op_flags = ALLOWED_WITHOUT_FH | ALLOWED_ON_ABSENT_FS,
> +		.op_name = "OP_SETCLIENTID_CONFIRM",
>  	},
>  	[OP_VERIFY] = {
>  		.op_func = (nfsd4op_func)nfsd4_verify,
> +		.op_name = "OP_VERIFY",
>  	},
>  	[OP_WRITE] = {
>  		.op_func = (nfsd4op_func)nfsd4_write,
> +		.op_name = "OP_WRITE",
>  	},
>  	[OP_RELEASE_LOCKOWNER] = {
>  		.op_func = (nfsd4op_func)nfsd4_release_lockowner,
>  		.op_flags = ALLOWED_WITHOUT_FH | ALLOWED_ON_ABSENT_FS,
> +		.op_name = "OP_RELEASE_LOCKOWNER",
>  	},
>  };
>  
> +static inline char *
> +nfsd4_op_name(unsigned opnum)
> +{
> +	if (opnum < ARRAY_SIZE(nfsd4_ops))
> +		return nfsd4_ops[opnum].op_name;
> +	return "unknown_operation";
> +}
> +
>  #define nfs4svc_decode_voidargs		NULL
>  #define nfs4svc_release_void		NULL
>  #define nfsd4_voidres			nfsd4_voidargs
> -- 
> 1.5.6.GIT
> 
> 
> > 
> > --b.
> > 
> >> --b.
> >>
> >>> Benny
> >>>
> >>>> --b.
> >>>>
> >>>>> +	OP(CLOSE),
> >>>>> +	OP(COMMIT),
> >>>>> +	OP(CREATE),
> >>>>> +	OP(DELEGPURGE),
> >>>>> +	OP(DELEGRETURN),
> >>>>> +	OP(GETATTR),
> >>>>> +	OP(GETFH),
> >>>>> +	OP(LINK),
> >>>>> +	OP(LOCK),
> >>>>> +	OP(LOCKT),
> >>>>> +	OP(LOCKU),
> >>>>> +	OP(LOOKUP),
> >>>>> +	OP(LOOKUPP),
> >>>>> +	OP(NVERIFY),
> >>>>> +	OP(OPEN),
> >>>>> +	OP(OPENATTR),
> >>>>> +	OP(OPEN_CONFIRM),
> >>>>> +	OP(OPEN_DOWNGRADE),
> >>>>> +	OP(PUTFH),
> >>>>> +	OP(PUTPUBFH),
> >>>>> +	OP(PUTROOTFH),
> >>>>> +	OP(READ),
> >>>>> +	OP(READDIR),
> >>>>> +	OP(READLINK),
> >>>>> +	OP(REMOVE),
> >>>>> +	OP(RENAME),
> >>>>> +	OP(RENEW),
> >>>>> +	OP(RESTOREFH),
> >>>>> +	OP(SAVEFH),
> >>>>> +	OP(SECINFO),
> >>>>> +	OP(SETATTR),
> >>>>> +	OP(SETCLIENTID),
> >>>>> +	OP(SETCLIENTID_CONFIRM),
> >>>>> +	OP(VERIFY),
> >>>>> +	OP(WRITE),
> >>>>> +	OP(RELEASE_LOCKOWNER),
> >>>>> +};
> >>>>> +#undef OP
> >>>>> +
> >>>>> +static inline char *
> >>>>> +nfsd4_op_name(unsigned opnum)
> >>>>> +{
> >>>>> +	if (opnum < ARRAY_SIZE(nfsd4_op_names))
> >>>>> +		return nfsd4_op_names[opnum];
> >>>>> +	return "unknown_operation";
> >>>>> +}
> >>>>> +
> >>>>>  static inline void
> >>>>>  fh_dup2(struct svc_fh *dst, struct svc_fh *src)
> >>>>>  {
> >>>>> @@ -888,7 +941,9 @@ nfsd4_proc_compound(struct svc_rqst *rqstp,
> >>>>>  	while (!status && resp->opcnt < args->opcnt) {
> >>>>>  		op = &args->ops[resp->opcnt++];
> >>>>>  
> >>>>> -		dprintk("nfsv4 compound op #%d: %d\n", resp->opcnt, op->opnum);
> >>>>> +		dprintk("nfsv4 compound op #%d/%d: %d (%s)\n",
> >>>>> +			resp->opcnt, args->opcnt, op->opnum,
> >>>>> +			nfsd4_op_name(op->opnum));
> >>>>>  
> >>>>>  		/*
> >>>>>  		 * The XDR decode routines may have pre-set op->status;
> >>>>> -- 
> >>>>> 1.5.6.GIT
> >>>>>
> 


More information about the pNFS mailing list