diff options
author | Andy Adamson <andros@netapp.com> | 2009-12-04 15:55:30 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2009-12-04 15:55:30 -0500 |
commit | 36bbe34239f63377b5179ad32fd13cd71d6e1ba7 (patch) | |
tree | 0e7edc3061f160784457b6ded18dbc47fa8cfed8 /fs/nfs | |
parent | e608e79f1bf4b967afcf57777e63b5f0939b00e8 (diff) | |
download | op-kernel-dev-36bbe34239f63377b5179ad32fd13cd71d6e1ba7.zip op-kernel-dev-36bbe34239f63377b5179ad32fd13cd71d6e1ba7.tar.gz |
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.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 6ef50aa..f0b6d56 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; } |