Re: [PATCH 08/50] nfsd4: fix nfs4err_resource in 4.1 case

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

 



I've applied the first 8 patches of this series for 3.15, with more
probably to come. My tree for 3.15 so far is at

	git://linux-nfs.org/~bfields/linux.git for-3.15

--b.

On Sat, Mar 22, 2014 at 09:11:39PM -0400, J. Bruce Fields wrote:
> From: "J. Bruce Fields" <bfields@xxxxxxxxxx>
> 
> encode_getattr, for example, can return nfserr_resource to indicate it
> ran out of buffer space.  That's not a legal error in the 4.1 case.  And
> in the 4.1 case, if we ran out of buffer space, we should have exceeded
> a session limit too.
> ---
>  fs/nfsd/nfs4xdr.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
> index 143780d..ea32674 100644
> --- a/fs/nfsd/nfs4xdr.c
> +++ b/fs/nfsd/nfs4xdr.c
> @@ -3626,6 +3626,14 @@ nfsd4_encode_operation(struct nfsd4_compoundres *resp, struct nfsd4_op *op)
>  	/* nfsd4_check_resp_size guarantees enough room for error status */
>  	if (!op->status)
>  		op->status = nfsd4_check_resp_size(resp, 0);
> +	if (op->status == nfserr_resource && nfsd4_has_session(&resp->cstate)) {
> +		struct nfsd4_slot *slot = resp->cstate.slot;
> +
> +		if (slot->sl_flags & NFSD4_SLOT_CACHETHIS)
> +			op->status = nfserr_rep_too_big_to_cache;
> +		else
> +			op->status = nfserr_rep_too_big;
> +	}
>  	if (so) {
>  		so->so_replay.rp_status = op->status;
>  		so->so_replay.rp_buflen = (char *)resp->p - (char *)(statp+1);
> -- 
> 1.8.5.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
--
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