aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/write.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/write.c')
-rw-r--r--fs/nfs/write.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index cd7c651f9b84..ee6d46fde76c 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -354,10 +354,8 @@ static int nfs_writepage_locked(struct page *page, struct writeback_control *wbc
354 struct nfs_pageio_descriptor pgio; 354 struct nfs_pageio_descriptor pgio;
355 int err; 355 int err;
356 356
357 NFS_PROTO(page_file_mapping(page)->host)->write_pageio_init(&pgio, 357 nfs_pageio_init_write(&pgio, page->mapping->host, wb_priority(wbc),
358 page->mapping->host, 358 false, &nfs_async_write_completion_ops);
359 wb_priority(wbc),
360 &nfs_async_write_completion_ops);
361 err = nfs_do_writepage(page, wbc, &pgio); 359 err = nfs_do_writepage(page, wbc, &pgio);
362 nfs_pageio_complete(&pgio); 360 nfs_pageio_complete(&pgio);
363 if (err < 0) 361 if (err < 0)
@@ -400,7 +398,8 @@ int nfs_writepages(struct address_space *mapping, struct writeback_control *wbc)
400 398
401 nfs_inc_stats(inode, NFSIOS_VFSWRITEPAGES); 399 nfs_inc_stats(inode, NFSIOS_VFSWRITEPAGES);
402 400
403 NFS_PROTO(inode)->write_pageio_init(&pgio, inode, wb_priority(wbc), &nfs_async_write_completion_ops); 401 nfs_pageio_init_write(&pgio, inode, wb_priority(wbc), false,
402 &nfs_async_write_completion_ops);
404 err = write_cache_pages(mapping, wbc, nfs_writepages_callback, &pgio); 403 err = write_cache_pages(mapping, wbc, nfs_writepages_callback, &pgio);
405 nfs_pageio_complete(&pgio); 404 nfs_pageio_complete(&pgio);
406 405
@@ -1282,11 +1281,17 @@ static const struct nfs_pageio_ops nfs_pageio_write_ops = {
1282}; 1281};
1283 1282
1284void nfs_pageio_init_write(struct nfs_pageio_descriptor *pgio, 1283void nfs_pageio_init_write(struct nfs_pageio_descriptor *pgio,
1285 struct inode *inode, int ioflags, 1284 struct inode *inode, int ioflags, bool force_mds,
1286 const struct nfs_pgio_completion_ops *compl_ops) 1285 const struct nfs_pgio_completion_ops *compl_ops)
1287{ 1286{
1288 nfs_pageio_init(pgio, inode, &nfs_pageio_write_ops, compl_ops, 1287 struct nfs_server *server = NFS_SERVER(inode);
1289 NFS_SERVER(inode)->wsize, ioflags); 1288 const struct nfs_pageio_ops *pg_ops = &nfs_pageio_write_ops;
1289
1290#ifdef CONFIG_NFS_V4_1
1291 if (server->pnfs_curr_ld && !force_mds)
1292 pg_ops = server->pnfs_curr_ld->pg_write_ops;
1293#endif
1294 nfs_pageio_init(pgio, inode, pg_ops, compl_ops, server->wsize, ioflags);
1290} 1295}
1291EXPORT_SYMBOL_GPL(nfs_pageio_init_write); 1296EXPORT_SYMBOL_GPL(nfs_pageio_init_write);
1292 1297