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) |
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 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 | ||