aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/file.c')
-rw-r--r--fs/nfs/file.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index acd4e4cd2906..50fb83a88b1b 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -175,7 +175,7 @@ nfs_file_read(struct kiocb *iocb, const struct iovec *iov,
175 ssize_t result; 175 ssize_t result;
176 176
177 if (iocb->ki_filp->f_flags & O_DIRECT) 177 if (iocb->ki_filp->f_flags & O_DIRECT)
178 return nfs_file_direct_read(iocb, iov, nr_segs, pos); 178 return nfs_file_direct_read(iocb, iov, nr_segs, pos, true);
179 179
180 dprintk("NFS: read(%s/%s, %lu@%lu)\n", 180 dprintk("NFS: read(%s/%s, %lu@%lu)\n",
181 dentry->d_parent->d_name.name, dentry->d_name.name, 181 dentry->d_parent->d_name.name, dentry->d_name.name,
@@ -482,6 +482,20 @@ static int nfs_launder_page(struct page *page)
482 return nfs_wb_page(inode, page); 482 return nfs_wb_page(inode, page);
483} 483}
484 484
485#ifdef CONFIG_NFS_SWAP
486static int nfs_swap_activate(struct swap_info_struct *sis, struct file *file,
487 sector_t *span)
488{
489 *span = sis->pages;
490 return xs_swapper(NFS_CLIENT(file->f_mapping->host)->cl_xprt, 1);
491}
492
493static void nfs_swap_deactivate(struct file *file)
494{
495 xs_swapper(NFS_CLIENT(file->f_mapping->host)->cl_xprt, 0);
496}
497#endif
498
485const struct address_space_operations nfs_file_aops = { 499const struct address_space_operations nfs_file_aops = {
486 .readpage = nfs_readpage, 500 .readpage = nfs_readpage,
487 .readpages = nfs_readpages, 501 .readpages = nfs_readpages,
@@ -496,6 +510,10 @@ const struct address_space_operations nfs_file_aops = {
496 .migratepage = nfs_migrate_page, 510 .migratepage = nfs_migrate_page,
497 .launder_page = nfs_launder_page, 511 .launder_page = nfs_launder_page,
498 .error_remove_page = generic_error_remove_page, 512 .error_remove_page = generic_error_remove_page,
513#ifdef CONFIG_NFS_SWAP
514 .swap_activate = nfs_swap_activate,
515 .swap_deactivate = nfs_swap_deactivate,
516#endif
499}; 517};
500 518
501/* 519/*
@@ -570,7 +588,7 @@ ssize_t nfs_file_write(struct kiocb *iocb, const struct iovec *iov,
570 size_t count = iov_length(iov, nr_segs); 588 size_t count = iov_length(iov, nr_segs);
571 589
572 if (iocb->ki_filp->f_flags & O_DIRECT) 590 if (iocb->ki_filp->f_flags & O_DIRECT)
573 return nfs_file_direct_write(iocb, iov, nr_segs, pos); 591 return nfs_file_direct_write(iocb, iov, nr_segs, pos, true);
574 592
575 dprintk("NFS: write(%s/%s, %lu@%Ld)\n", 593 dprintk("NFS: write(%s/%s, %lu@%Ld)\n",
576 dentry->d_parent->d_name.name, dentry->d_name.name, 594 dentry->d_parent->d_name.name, dentry->d_name.name,