Re: [PATCH] nfsd: print status when nfsd4_open fails to open file it just created

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jul 21, 2014 at 09:37:30AM -0400, Jeff Layton wrote:
> It's possible for nfsd to fail opening a file that it has just created.
> When that happens, we throw a WARN but it doesn't include any info about
> the error code. Print the status code to give us a bit more info.
> 
> Our QA group hit some of these warnings under some very heavy stress
> testing. My suspicion is that they hit the file-max limit, but it's hard
> to know for sure. Go ahead and add a -ENFILE mapping to
> nfserr_serverfault to make the error more distinct (and correct).

Thanks, applying.

We do need to fix this.  The open code is complicated, but I think there
probably aren't too many failure cases after a successful create left.

--b.

> 
> Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxxxxxxx>
> ---
>  fs/nfsd/nfs4proc.c | 4 +++-
>  fs/nfsd/nfsproc.c  | 1 +
>  2 files changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
> index 29a617ebe38c..8611585f739d 100644
> --- a/fs/nfsd/nfs4proc.c
> +++ b/fs/nfsd/nfs4proc.c
> @@ -460,7 +460,9 @@ nfsd4_open(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
>  	 * set, (2) sets open->op_stateid, (3) sets open->op_delegation.
>  	 */
>  	status = nfsd4_process_open2(rqstp, resfh, open);
> -	WARN_ON(status && open->op_created);
> +	WARN(status && open->op_created,
> +	     "nfsd4_process_open2 failed to open newly-created file! status=%u\n",
> +	     be32_to_cpu(status));
>  out:
>  	if (resfh && resfh != &cstate->current_fh) {
>  		fh_dup2(&cstate->current_fh, resfh);
> diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c
> index b19c7e8bf64c..b8680738f588 100644
> --- a/fs/nfsd/nfsproc.c
> +++ b/fs/nfsd/nfsproc.c
> @@ -745,6 +745,7 @@ nfserrno (int errno)
>  		{ nfserr_notsupp, -EOPNOTSUPP },
>  		{ nfserr_toosmall, -ETOOSMALL },
>  		{ nfserr_serverfault, -ESERVERFAULT },
> +		{ nfserr_serverfault, -ENFILE },
>  	};
>  	int	i;
>  
> -- 
> 1.9.3
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux