diff options
Diffstat (limited to 'fs/nfs/write.c')
-rw-r--r-- | fs/nfs/write.c | 21 |
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 | ||
1284 | void nfs_pageio_init_write(struct nfs_pageio_descriptor *pgio, | 1283 | void 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 | } |
1291 | EXPORT_SYMBOL_GPL(nfs_pageio_init_write); | 1296 | EXPORT_SYMBOL_GPL(nfs_pageio_init_write); |
1292 | 1297 | ||