pnfs-obj: Remove redundant EOF from objlayout_io_state
authorBoaz Harrosh <bharrosh@panasas.com>
Mon, 31 Oct 2011 21:45:06 +0000 (14:45 -0700)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Thu, 3 Nov 2011 03:56:00 +0000 (23:56 -0400)
The EOF calculation was done on .read_pagelist(), cached
in objlayout_io_state->eof, and set in objlayout_read_done()
into nfs_read_data->res.eof.

So set it directly into nfs_read_data->res.eof and avoid
the extra member.

Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
fs/nfs/objlayout/objlayout.c
fs/nfs/objlayout/objlayout.h

index 1d06f8e..1300736 100644 (file)
@@ -287,17 +287,14 @@ static void _rpc_read_complete(struct work_struct *work)
 void
 objlayout_read_done(struct objlayout_io_state *state, ssize_t status, bool sync)
 {
-       int eof = state->eof;
-       struct nfs_read_data *rdata;
+       struct nfs_read_data *rdata = state->rpcdata;
 
        state->status = status;
-       dprintk("%s: Begin status=%zd eof=%d\n", __func__, status, eof);
-       rdata = state->rpcdata;
+       dprintk("%s: Begin status=%zd eof=%d\n", __func__,
+               status, rdata->res.eof);
        rdata->task.tk_status = status;
-       if (status >= 0) {
+       if (status >= 0)
                rdata->res.count = status;
-               rdata->res.eof = eof;
-       }
        objlayout_iodone(state);
        /* must not use state after this point */
 
@@ -330,11 +327,14 @@ objlayout_read_pagelist(struct nfs_read_data *rdata)
                        status = 0;
                        rdata->res.count = 0;
                        rdata->res.eof = 1;
+                       /*FIXME: do we need to call pnfs_ld_read_done() */
                        goto out;
                }
                count = eof - offset;
        }
 
+       rdata->res.eof = (offset + count) >= eof;
+
        state = objlayout_alloc_io_state(NFS_I(rdata->inode)->layout,
                                         rdata->args.pages, rdata->args.pgbase,
                                         offset, count,
@@ -345,8 +345,6 @@ objlayout_read_pagelist(struct nfs_read_data *rdata)
                goto out;
        }
 
-       state->eof = state->offset + state->count >= eof;
-
        status = objio_read_pagelist(state);
  out:
        dprintk("%s: Return status %Zd\n", __func__, status);
index a8244c8..ffb884c 100644 (file)
@@ -86,7 +86,6 @@ struct objlayout_io_state {
 
        void *rpcdata;
        int status;             /* res */
-       int eof;                /* res */
        int committed;          /* res */
 
        /* Error reporting (layout_return) */