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.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 14364dc001f7..c40e4363e746 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -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 (iocb->ki_flags & IOCB_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))