NFSv2/v3: Remove incorrect dprintks from the readdir reply code
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 20 Jun 2012 19:50:14 +0000 (15:50 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Sun, 24 Jun 2012 20:20:07 +0000 (16:20 -0400)
The actual size of the directory is unknown to the client, so it is
always requesting the maximum number it can handle. If the server
is replying with fewer entries than was requested, then that will
usually reflect the fact that we've hit the end of the directory.
Flagging it as an error is therefore incorrect.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/nfs2xdr.c
fs/nfs/nfs3xdr.c

index baf759bccd054d562d24d9adf43af18915da8267..db81166182c9b79f35210f2d03435654d7c2d907 100644 (file)
@@ -978,16 +978,10 @@ static int decode_readdirok(struct xdr_stream *xdr)
        pglen = xdr->buf->page_len;
        hdrlen = (u8 *)xdr->p - (u8 *)xdr->iov->iov_base;
        recvd = xdr->buf->len - hdrlen;
-       if (unlikely(pglen > recvd))
-               goto out_cheating;
-out:
+       if (pglen > recvd)
+               pglen = recvd;
        xdr_read_pages(xdr, pglen);
        return pglen;
-out_cheating:
-       dprintk("NFS: server cheating in readdir result: "
-               "pglen %u > recvd %u\n", pglen, recvd);
-       pglen = recvd;
-       goto out;
 }
 
 static int nfs2_xdr_dec_readdirres(struct rpc_rqst *req,
index 902de489ec9bac793dd2e3fa65b663262879b271..3c61c7f80a4baaa5b494b46746804cddf25dae86 100644 (file)
@@ -2045,16 +2045,10 @@ static int decode_dirlist3(struct xdr_stream *xdr)
        pglen = xdr->buf->page_len;
        hdrlen = (u8 *)xdr->p - (u8 *)xdr->iov->iov_base;
        recvd = xdr->buf->len - hdrlen;
-       if (unlikely(pglen > recvd))
-               goto out_cheating;
-out:
+       if (pglen > recvd)
+               pglen = recvd;
        xdr_read_pages(xdr, pglen);
        return pglen;
-out_cheating:
-       dprintk("NFS: server cheating in readdir result: "
-               "pglen %u > recvd %u\n", pglen, recvd);
-       pglen = recvd;
-       goto out;
 }
 
 static int decode_readdir3resok(struct xdr_stream *xdr,