summaryrefslogtreecommitdiffstats
path: root/fs/nfs/pagelist.c
diff options
context:
space:
mode:
authorAnna Schumaker2014-05-06 15:12:38 +0200
committerTrond Myklebust2014-05-29 17:11:40 +0200
commitc3766276f26090f4459329839cdcc8506dfbced5 (patch)
tree3ab2e9fbafd8241995a0bf16302373db947ee9b3 /fs/nfs/pagelist.c
parentNFS: Create a common initiate_pgio() function (diff)
downloadkernel-qcow2-linux-c3766276f26090f4459329839cdcc8506dfbced5.tar.gz
kernel-qcow2-linux-c3766276f26090f4459329839cdcc8506dfbced5.tar.xz
kernel-qcow2-linux-c3766276f26090f4459329839cdcc8506dfbced5.zip
NFS: Create a common multiple_pgios() function
Once again, these two functions look identical in the read and write case. Time to combine them together! 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.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c
index ab5b1850ca4f..2471e0278811 100644
--- a/fs/nfs/pagelist.c
+++ b/fs/nfs/pagelist.c
@@ -493,6 +493,27 @@ out:
}
EXPORT_SYMBOL_GPL(nfs_initiate_pgio);
+int nfs_do_multiple_pgios(struct list_head *head,
+ const struct rpc_call_ops *call_ops,
+ int how)
+{
+ struct nfs_pgio_data *data;
+ int ret = 0;
+
+ while (!list_empty(head)) {
+ int ret2;
+
+ data = list_first_entry(head, struct nfs_pgio_data, list);
+ list_del_init(&data->list);
+
+ ret2 = nfs_initiate_pgio(NFS_CLIENT(data->header->inode),
+ data, call_ops, how, 0);
+ if (ret == 0)
+ ret = ret2;
+ }
+ return ret;
+}
+
/**
* nfs_pgio_error - Clean up from a pageio error
* @desc: IO descriptor