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.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index f6a3adedf027..c40e4363e746 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -170,7 +170,7 @@ nfs_file_read(struct kiocb *iocb, struct iov_iter *to)
170 struct inode *inode = file_inode(iocb->ki_filp); 170 struct inode *inode = file_inode(iocb->ki_filp);
171 ssize_t result; 171 ssize_t result;
172 172
173 if (iocb->ki_filp->f_flags & O_DIRECT) 173 if (iocb->ki_flags & IOCB_DIRECT)
174 return nfs_file_direct_read(iocb, to, iocb->ki_pos); 174 return nfs_file_direct_read(iocb, to, iocb->ki_pos);
175 175
176 dprintk("NFS: read(%pD2, %zu@%lu)\n", 176 dprintk("NFS: read(%pD2, %zu@%lu)\n",
@@ -674,17 +674,20 @@ ssize_t nfs_file_write(struct kiocb *iocb, struct iov_iter *from)
674 unsigned long written = 0; 674 unsigned long written = 0;
675 ssize_t result; 675 ssize_t result;
676 size_t count = iov_iter_count(from); 676 size_t count = iov_iter_count(from);
677 loff_t pos = iocb->ki_pos;
678 677
679 result = nfs_key_timeout_notify(file, inode); 678 result = nfs_key_timeout_notify(file, inode);
680 if (result) 679 if (result)
681 return result; 680 return result;
682 681
683 if (file->f_flags & O_DIRECT) 682 if (iocb->ki_flags & IOCB_DIRECT) {
684 return nfs_file_direct_write(iocb, from, pos); 683 result = generic_write_checks(iocb, from);
684 if (result <= 0)
685 return result;
686 return nfs_file_direct_write(iocb, from);
687 }
685 688
686 dprintk("NFS: write(%pD2, %zu@%Ld)\n", 689 dprintk("NFS: write(%pD2, %zu@%Ld)\n",
687 file, count, (long long) pos); 690 file, count, (long long) iocb->ki_pos);
688 691
689 result = -EBUSY; 692 result = -EBUSY;
690 if (IS_SWAPFILE(inode)) 693 if (IS_SWAPFILE(inode))
@@ -692,7 +695,7 @@ ssize_t nfs_file_write(struct kiocb *iocb, struct iov_iter *from)
692 /* 695 /*
693 * O_APPEND implies that we must revalidate the file length. 696 * O_APPEND implies that we must revalidate the file length.
694 */ 697 */
695 if (file->f_flags & O_APPEND) { 698 if (iocb->ki_flags & IOCB_APPEND) {
696 result = nfs_revalidate_file_size(inode, file); 699 result = nfs_revalidate_file_size(inode, file);
697 if (result) 700 if (result)
698 goto out; 701 goto out;