diff options
author | Anna Schumaker <Anna.Schumaker@netapp.com> | 2014-05-06 15:12:35 +0200 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2014-05-29 00:41:04 +0200 |
commit | 844c9e691d8723853ca8f2de0207683538645824 (patch) | |
tree | 81e74dc24a665888727c0e7b26a59db2feea2ecb /fs/nfs/pagelist.c | |
parent | NFS: Create a common rpcsetup function for reads and writes (diff) | |
download | linux-844c9e691d8723853ca8f2de0207683538645824.tar.xz linux-844c9e691d8723853ca8f2de0207683538645824.zip |
NFS: Create a common pgio_error function
At this point, the read and write versions of this function look
identical so both should use the same function.
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/pagelist.c')
-rw-r--r-- | fs/nfs/pagelist.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c index 0ccd95116968..b0a98daae14c 100644 --- a/fs/nfs/pagelist.c +++ b/fs/nfs/pagelist.c @@ -447,6 +447,26 @@ static void nfs_pgio_prepare(struct rpc_task *task, void *calldata) } /** + * nfs_pgio_error - Clean up from a pageio error + * @desc: IO descriptor + * @hdr: pageio header + */ +int nfs_pgio_error(struct nfs_pageio_descriptor *desc, + struct nfs_pgio_header *hdr) +{ + struct nfs_pgio_data *data; + + set_bit(NFS_IOHDR_REDO, &hdr->flags); + while (!list_empty(&hdr->rpc_list)) { + data = list_first_entry(&hdr->rpc_list, struct nfs_pgio_data, list); + list_del(&data->list); + nfs_pgio_data_release(data); + } + desc->pg_completion_ops->error_cleanup(&desc->pg_list); + return -ENOMEM; +} + +/** * nfs_pgio_release - Release pageio data * @calldata: The pageio data to release */ |