nfs: return compound hdr.status when there are no op replies
authorBenny Halevy <bhalevy@panasas.com>
Tue, 23 Dec 2008 21:06:13 +0000 (16:06 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Tue, 23 Dec 2008 21:06:13 +0000 (16:06 -0500)
When there are no op replies encoded in the compound reply
hdr.status still contains the overall status of the compound
rpc.  This can happen, e.g., when the server returns a
NFS4ERR_MINOR_VERS_MISMATCH error.

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/nfs4xdr.c

index d8ddfc5..3f18a26 100644 (file)
@@ -2222,6 +2222,8 @@ static int decode_compound_hdr(struct xdr_stream *xdr, struct compound_hdr *hdr)
        hdr->tag = (char *)p;
        p += XDR_QUADLEN(hdr->taglen);
        READ32(hdr->nops);
+       if (unlikely(hdr->nops < 1))
+               return nfs4_stat_to_errno(hdr->status);
        return 0;
 }