summaryrefslogtreecommitdiffstats
path: root/fs/nfs/read.c
diff options
context:
space:
mode:
authorTrond Myklebust2009-12-06 01:32:19 +0100
committerTrond Myklebust2009-12-06 01:32:19 +0100
commitd61e612a728fb9bf848c4383f8f6645e822d5b57 (patch)
treeb4024efc797fa3b992b042f484574c1d43893a61 /fs/nfs/read.c
parentNFSv41: Fix nfs4_proc_create_session (diff)
downloadkernel-qcow2-linux-d61e612a728fb9bf848c4383f8f6645e822d5b57.tar.gz
kernel-qcow2-linux-d61e612a728fb9bf848c4383f8f6645e822d5b57.tar.xz
kernel-qcow2-linux-d61e612a728fb9bf848c4383f8f6645e822d5b57.zip
NFSv41: Clean up slot table management
We no longer need to maintain a distinction between nfs41_sequence_done and nfs41_sequence_free_slot. This fixes a number of slot table leakages in the NFSv4.1 code. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/read.c')
-rw-r--r--fs/nfs/read.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/fs/nfs/read.c b/fs/nfs/read.c
index 3e04fb9ea644..d319bfbe5137 100644
--- a/fs/nfs/read.c
+++ b/fs/nfs/read.c
@@ -356,26 +356,19 @@ static void nfs_readpage_retry(struct rpc_task *task, struct nfs_read_data *data
struct nfs_readres *resp = &data->res;
if (resp->eof || resp->count == argp->count)
- goto out;
+ return;
/* This is a short read! */
nfs_inc_stats(data->inode, NFSIOS_SHORTREAD);
/* Has the server at least made some progress? */
if (resp->count == 0)
- goto out;
+ return;
/* Yes, so retry the read at the end of the data */
argp->offset += resp->count;
argp->pgbase += resp->count;
argp->count -= resp->count;
- nfs4_restart_rpc(task, NFS_SERVER(data->inode)->nfs_client,
- &data->res.seq_res);
- return;
-out:
- nfs4_sequence_free_slot(NFS_SERVER(data->inode)->nfs_client,
- &data->res.seq_res);
- return;
-
+ nfs4_restart_rpc(task, NFS_SERVER(data->inode)->nfs_client);
}
/*