aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs
diff options
context:
space:
mode:
authorAndy Adamson <andros@netapp.com>2009-12-04 15:55:30 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2009-12-04 15:55:30 -0500
commit36bbe34239f63377b5179ad32fd13cd71d6e1ba7 (patch)
tree0e7edc3061f160784457b6ded18dbc47fa8cfed8 /fs/nfs
parente608e79f1bf4b967afcf57777e63b5f0939b00e8 (diff)
nfs41: free the slot on unhandled read errors
nfs4_read_done returns zero on unhandled errors. nfs_readpage_result will return on a negative tk_status without freeing the slot. Call nfs4_sequence_free_slot on unhandled errors in nfs4_read_done. Signed-off-by: Andy Adamson <andros@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs')
-rw-r--r--fs/nfs/nfs4proc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 6ef50aa785d5..f0b6d569a50a 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -3009,6 +3009,9 @@ static int nfs4_read_done(struct rpc_task *task, struct nfs_read_data *data)
3009 nfs_invalidate_atime(data->inode); 3009 nfs_invalidate_atime(data->inode);
3010 if (task->tk_status > 0) 3010 if (task->tk_status > 0)
3011 renew_lease(server, data->timestamp); 3011 renew_lease(server, data->timestamp);
3012 else if (task->tk_status < 0)
3013 nfs4_sequence_free_slot(server->nfs_client, &data->res.seq_res);
3014
3012 return 0; 3015 return 0;
3013} 3016}
3014 3017