aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/write.c
diff options
context:
space:
mode:
authorBryan Schumaker <bjschuma@netapp.com>2012-06-20 15:53:48 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2012-06-29 11:46:46 -0400
commit57208fa7e51ca16cd68de8e8bf482f16b06d3ea1 (patch)
treec34e830385439ac3ec5679c37266c2caa922e9aa /fs/nfs/write.c
parent1abb50886afe8a126705c93dab2b50c1252a9c19 (diff)
NFS: Create an write_pageio_init() function
pNFS needs to select a write function based on the layout driver currently in use, so I let each NFS version decide how to best handle initializing writes. Signed-off-by: Bryan Schumaker <bjschuma@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/write.c')
-rw-r--r--fs/nfs/write.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index f163355b9618..c11fb0025f0b 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -336,8 +336,10 @@ static int nfs_writepage_locked(struct page *page, struct writeback_control *wbc
336 struct nfs_pageio_descriptor pgio; 336 struct nfs_pageio_descriptor pgio;
337 int err; 337 int err;
338 338
339 nfs_pageio_init_write(&pgio, page->mapping->host, wb_priority(wbc), 339 NFS_PROTO(page->mapping->host)->write_pageio_init(&pgio,
340 &nfs_async_write_completion_ops); 340 page->mapping->host,
341 wb_priority(wbc),
342 &nfs_async_write_completion_ops);
341 err = nfs_do_writepage(page, wbc, &pgio); 343 err = nfs_do_writepage(page, wbc, &pgio);
342 nfs_pageio_complete(&pgio); 344 nfs_pageio_complete(&pgio);
343 if (err < 0) 345 if (err < 0)
@@ -380,8 +382,7 @@ int nfs_writepages(struct address_space *mapping, struct writeback_control *wbc)
380 382
381 nfs_inc_stats(inode, NFSIOS_VFSWRITEPAGES); 383 nfs_inc_stats(inode, NFSIOS_VFSWRITEPAGES);
382 384
383 nfs_pageio_init_write(&pgio, inode, wb_priority(wbc), 385 NFS_PROTO(inode)->write_pageio_init(&pgio, inode, wb_priority(wbc), &nfs_async_write_completion_ops);
384 &nfs_async_write_completion_ops);
385 err = write_cache_pages(mapping, wbc, nfs_writepages_callback, &pgio); 386 err = write_cache_pages(mapping, wbc, nfs_writepages_callback, &pgio);
386 nfs_pageio_complete(&pgio); 387 nfs_pageio_complete(&pgio);
387 388
@@ -1202,7 +1203,7 @@ static const struct nfs_pageio_ops nfs_pageio_write_ops = {
1202 .pg_doio = nfs_generic_pg_writepages, 1203 .pg_doio = nfs_generic_pg_writepages,
1203}; 1204};
1204 1205
1205void nfs_pageio_init_write_mds(struct nfs_pageio_descriptor *pgio, 1206void nfs_pageio_init_write(struct nfs_pageio_descriptor *pgio,
1206 struct inode *inode, int ioflags, 1207 struct inode *inode, int ioflags,
1207 const struct nfs_pgio_completion_ops *compl_ops) 1208 const struct nfs_pgio_completion_ops *compl_ops)
1208{ 1209{
@@ -1217,13 +1218,6 @@ void nfs_pageio_reset_write_mds(struct nfs_pageio_descriptor *pgio)
1217} 1218}
1218EXPORT_SYMBOL_GPL(nfs_pageio_reset_write_mds); 1219EXPORT_SYMBOL_GPL(nfs_pageio_reset_write_mds);
1219 1220
1220void nfs_pageio_init_write(struct nfs_pageio_descriptor *pgio,
1221 struct inode *inode, int ioflags,
1222 const struct nfs_pgio_completion_ops *compl_ops)
1223{
1224 if (!pnfs_pageio_init_write(pgio, inode, ioflags, compl_ops))
1225 nfs_pageio_init_write_mds(pgio, inode, ioflags, compl_ops);
1226}
1227 1221
1228void nfs_write_prepare(struct rpc_task *task, void *calldata) 1222void nfs_write_prepare(struct rpc_task *task, void *calldata)
1229{ 1223{