summaryrefslogtreecommitdiff
path: root/fs
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
parente608e79f1bf4b967afcf57777e63b5f0939b00e8 (diff)
downloadlinux-exynos-36bbe34239f63377b5179ad32fd13cd71d6e1ba7.tar.gz
linux-exynos-36bbe34239f63377b5179ad32fd13cd71d6e1ba7.tar.bz2
linux-exynos-36bbe34239f63377b5179ad32fd13cd71d6e1ba7.zip
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')
-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)
nfs_invalidate_atime(data->inode);
if (task->tk_status > 0)
renew_lease(server, data->timestamp);
+ else if (task->tk_status < 0)
+ nfs4_sequence_free_slot(server->nfs_client, &data->res.seq_res);
+
return 0;
}