[pnfs] [PATCH 5/8] nfsd: tabulate nfs4 xdr encoding functions
J. Bruce Fields
bfields at fieldses.org
Wed Jul 2 18:44:32 EDT 2008
On Mon, Jun 30, 2008 at 09:07:05PM +0300, Benny Halevy wrote:
> diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
> index 051ca77..81d7552 100644
> --- a/fs/nfsd/nfs4xdr.c
> +++ b/fs/nfsd/nfs4xdr.c
...
> + BUG_ON(op->opnum < 0 || op->opnum >= ARRAY_SIZE(nfsd4_enc_ops) ||
> + !nfsd4_enc_ops[op->opnum]);
We hit this in the OP_ILLEGAL case. Which I wouldn't have noticed if it
hadn't been for
./testserver.py ying2:/pynfstest --rundeps --hidepass --maketree COMP5
(I routinely run newpynfs with a commandline that has the known failures
excluded, below; appended below.
For now I'm just adding a check for the OP_ILLEGAL case:
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index facd247..9bb2909 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -2605,10 +2605,13 @@ nfsd4_encode_operation(struct nfsd4_compoundres *resp, struct nfsd4_op *op)
statp = p++; /* to be backfilled at the end */
ADJUST_ARGS();
+ if (op->opnum == OP_ILLEGAL)
+ goto status;
BUG_ON(op->opnum < 0 || op->opnum >= ARRAY_SIZE(nfsd4_enc_ops) ||
!nfsd4_enc_ops[op->opnum]);
nfsd4_enc_ops[op->opnum](resp, op->status, &op->u);
+status:
/*
* Note: We write the status directly, instead of using WRITE32(),
* since it is already in network byte order.
but maybe there's some nicer fix.
The series introduces a few other newpynfs failures that I haven't
tracked down yet.
--b.
#failures:
CID6
LOOK7
SATT1a
CIDCF2
COMP6
CR13
CR14
LINK4a
LINK9
LOOKP2a
NVF7a
NVF7b
NVF7c
NVF7d
NVF7f
NVF7r
NVF7s
OPCF3a
OPEN4
OPEN23b
PUB1
RD12
RDDR12
RNM11
RNM16
SATT12a
# change attribute resolution problem:
SATT14
SEC7
VF7a
VF7b
VF7c
VF7d
VF7f
VF7r
VF7s
#warnings:
CID1
LOCK8c
LOCK18
LOCK21
OPDG9a
OPDG9b
OPDG9c
OPDG9d
OPDG9f
OPDG9s
OPEN16
RD4
RM7
RNM10
More information about the pNFS
mailing list