aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/file.c2
-rw-r--r--fs/fuse/file.c3
-rw-r--r--fs/ocfs2/file.c2
-rw-r--r--fs/xfs/xfs_file.c2
-rw-r--r--include/linux/fs.h2
-rw-r--r--mm/filemap.c6
6 files changed, 8 insertions, 9 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index f6032a2bfab9..8ed4b165abbd 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1640,7 +1640,7 @@ static ssize_t __btrfs_direct_write(struct kiocb *iocb,
1640 loff_t endbyte; 1640 loff_t endbyte;
1641 int err; 1641 int err;
1642 1642
1643 written = generic_file_direct_write(iocb, iov, &nr_segs, pos, &iocb->ki_pos, 1643 written = generic_file_direct_write(iocb, iov, &nr_segs, pos,
1644 count, ocount); 1644 count, ocount);
1645 1645
1646 if (written < 0 || written == count) 1646 if (written < 0 || written == count)
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index a91d3b4d32f3..fd06d1ebc2eb 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -1143,8 +1143,7 @@ static ssize_t fuse_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
1143 goto out; 1143 goto out;
1144 1144
1145 if (file->f_flags & O_DIRECT) { 1145 if (file->f_flags & O_DIRECT) {
1146 written = generic_file_direct_write(iocb, iov, &nr_segs, 1146 written = generic_file_direct_write(iocb, iov, &nr_segs, pos,
1147 pos, &iocb->ki_pos,
1148 count, ocount); 1147 count, ocount);
1149 if (written < 0 || written == count) 1148 if (written < 0 || written == count)
1150 goto out; 1149 goto out;
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 89099cce14fe..77b8a742866f 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -2375,7 +2375,7 @@ relock:
2375 2375
2376 if (direct_io) { 2376 if (direct_io) {
2377 written = generic_file_direct_write(iocb, iov, &nr_segs, *ppos, 2377 written = generic_file_direct_write(iocb, iov, &nr_segs, *ppos,
2378 ppos, count, ocount); 2378 count, ocount);
2379 if (written < 0) { 2379 if (written < 0) {
2380 ret = written; 2380 ret = written;
2381 goto out_dio; 2381 goto out_dio;
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index 175ce58fbfa3..e593554ce65e 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -699,7 +699,7 @@ xfs_file_dio_aio_write(
699 699
700 trace_xfs_file_direct_write(ip, count, iocb->ki_pos, 0); 700 trace_xfs_file_direct_write(ip, count, iocb->ki_pos, 0);
701 ret = generic_file_direct_write(iocb, iovp, 701 ret = generic_file_direct_write(iocb, iovp,
702 &nr_segs, pos, &iocb->ki_pos, count, ocount); 702 &nr_segs, pos, count, ocount);
703 703
704out: 704out:
705 xfs_rw_iunlock(ip, iolock); 705 xfs_rw_iunlock(ip, iolock);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 830e37420f5e..9dfd7c7ff8e3 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2395,7 +2395,7 @@ extern ssize_t generic_file_aio_read(struct kiocb *, const struct iovec *, unsig
2395extern ssize_t __generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long); 2395extern ssize_t __generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long);
2396extern ssize_t generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long, loff_t); 2396extern ssize_t generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long, loff_t);
2397extern ssize_t generic_file_direct_write(struct kiocb *, const struct iovec *, 2397extern ssize_t generic_file_direct_write(struct kiocb *, const struct iovec *,
2398 unsigned long *, loff_t, loff_t *, size_t, size_t); 2398 unsigned long *, loff_t, size_t, size_t);
2399extern ssize_t generic_file_buffered_write(struct kiocb *, const struct iovec *, 2399extern ssize_t generic_file_buffered_write(struct kiocb *, const struct iovec *,
2400 unsigned long, loff_t, size_t, ssize_t); 2400 unsigned long, loff_t, size_t, ssize_t);
2401extern ssize_t do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos); 2401extern ssize_t do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos);
diff --git a/mm/filemap.c b/mm/filemap.c
index 9d515a1a2372..93e9cf576452 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1985,7 +1985,7 @@ EXPORT_SYMBOL(pagecache_write_end);
1985 1985
1986ssize_t 1986ssize_t
1987generic_file_direct_write(struct kiocb *iocb, const struct iovec *iov, 1987generic_file_direct_write(struct kiocb *iocb, const struct iovec *iov,
1988 unsigned long *nr_segs, loff_t pos, loff_t *ppos, 1988 unsigned long *nr_segs, loff_t pos,
1989 size_t count, size_t ocount) 1989 size_t count, size_t ocount)
1990{ 1990{
1991 struct file *file = iocb->ki_filp; 1991 struct file *file = iocb->ki_filp;
@@ -2046,7 +2046,7 @@ generic_file_direct_write(struct kiocb *iocb, const struct iovec *iov,
2046 i_size_write(inode, pos); 2046 i_size_write(inode, pos);
2047 mark_inode_dirty(inode); 2047 mark_inode_dirty(inode);
2048 } 2048 }
2049 *ppos = pos; 2049 iocb->ki_pos = pos;
2050 } 2050 }
2051out: 2051out:
2052 return written; 2052 return written;
@@ -2265,7 +2265,7 @@ ssize_t __generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
2265 ssize_t written_buffered; 2265 ssize_t written_buffered;
2266 2266
2267 written = generic_file_direct_write(iocb, iov, &nr_segs, pos, 2267 written = generic_file_direct_write(iocb, iov, &nr_segs, pos,
2268 &iocb->ki_pos, count, ocount); 2268 count, ocount);
2269 if (written < 0 || written == count) 2269 if (written < 0 || written == count)
2270 goto out; 2270 goto out;
2271 /* 2271 /*