aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/read.c
diff options
context:
space:
mode:
authorAnna Schumaker <Anna.Schumaker@netapp.com>2014-05-06 09:12:34 -0400
committerTrond Myklebust <trond.myklebust@primarydata.com>2014-05-28 18:40:56 -0400
commitce59515c1484d3a01bc2f3e7043dc488d25efe34 (patch)
tree00c371ca81a26280eab34ad96fae8ca9c95d940d /fs/nfs/read.c
parent6f92fa4581f1c26562f80dc686b3c9ea76556911 (diff)
NFS: Create a common rpcsetup function for reads and writes
Write adds a little bit of code dealing with flush flags, but since "how" will always be 0 when reading we can share the code. Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/read.c')
-rw-r--r--fs/nfs/read.c26
1 files changed, 2 insertions, 24 deletions
diff --git a/fs/nfs/read.c b/fs/nfs/read.c
index a33490c0899f..0c88c60fbee9 100644
--- a/fs/nfs/read.c
+++ b/fs/nfs/read.c
@@ -192,28 +192,6 @@ int nfs_initiate_read(struct rpc_clnt *clnt,
192} 192}
193EXPORT_SYMBOL_GPL(nfs_initiate_read); 193EXPORT_SYMBOL_GPL(nfs_initiate_read);
194 194
195/*
196 * Set up the NFS read request struct
197 */
198static void nfs_read_rpcsetup(struct nfs_pgio_data *data,
199 unsigned int count, unsigned int offset)
200{
201 struct nfs_page *req = data->header->req;
202
203 data->args.fh = NFS_FH(data->header->inode);
204 data->args.offset = req_offset(req) + offset;
205 data->args.pgbase = req->wb_pgbase + offset;
206 data->args.pages = data->pages.pagevec;
207 data->args.count = count;
208 data->args.context = get_nfs_open_context(req->wb_context);
209 data->args.lock_context = req->wb_lock_context;
210
211 data->res.fattr = &data->fattr;
212 data->res.count = count;
213 data->res.eof = 0;
214 nfs_fattr_init(&data->fattr);
215}
216
217static int nfs_do_read(struct nfs_pgio_data *data, 195static int nfs_do_read(struct nfs_pgio_data *data,
218 const struct rpc_call_ops *call_ops) 196 const struct rpc_call_ops *call_ops)
219{ 197{
@@ -305,7 +283,7 @@ static int nfs_pagein_multi(struct nfs_pageio_descriptor *desc,
305 return -ENOMEM; 283 return -ENOMEM;
306 } 284 }
307 data->pages.pagevec[0] = page; 285 data->pages.pagevec[0] = page;
308 nfs_read_rpcsetup(data, len, offset); 286 nfs_pgio_rpcsetup(data, len, offset, 0, NULL);
309 list_add(&data->list, &hdr->rpc_list); 287 list_add(&data->list, &hdr->rpc_list);
310 nbytes -= len; 288 nbytes -= len;
311 offset += len; 289 offset += len;
@@ -340,7 +318,7 @@ static int nfs_pagein_one(struct nfs_pageio_descriptor *desc,
340 *pages++ = req->wb_page; 318 *pages++ = req->wb_page;
341 } 319 }
342 320
343 nfs_read_rpcsetup(data, desc->pg_count, 0); 321 nfs_pgio_rpcsetup(data, desc->pg_count, 0, 0, NULL);
344 list_add(&data->list, &hdr->rpc_list); 322 list_add(&data->list, &hdr->rpc_list);
345 desc->pg_rpc_callops = &nfs_pgio_common_ops; 323 desc->pg_rpc_callops = &nfs_pgio_common_ops;
346 return 0; 324 return 0;