aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/ceph/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.c9
5 files changed, 8 insertions, 10 deletions
diff --git a/fs/ceph/file.c b/fs/ceph/file.c
index 09c7afe32e49..a798db5e5e39 100644
--- a/fs/ceph/file.c
+++ b/fs/ceph/file.c
@@ -978,8 +978,7 @@ retry_snap:
978 * can not run at the same time 978 * can not run at the same time
979 */ 979 */
980 written = generic_file_buffered_write(iocb, iov, nr_segs, 980 written = generic_file_buffered_write(iocb, iov, nr_segs,
981 pos, &iocb->ki_pos, 981 pos, count, 0);
982 count, 0);
983 mutex_unlock(&inode->i_mutex); 982 mutex_unlock(&inode->i_mutex);
984 } 983 }
985 984
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c
index 51632c40e896..89099cce14fe 100644
--- a/fs/ocfs2/file.c
+++ b/fs/ocfs2/file.c
@@ -2383,7 +2383,7 @@ relock:
2383 } else { 2383 } else {
2384 current->backing_dev_info = file->f_mapping->backing_dev_info; 2384 current->backing_dev_info = file->f_mapping->backing_dev_info;
2385 written = generic_file_buffered_write(iocb, iov, nr_segs, *ppos, 2385 written = generic_file_buffered_write(iocb, iov, nr_segs, *ppos,
2386 ppos, count, 0); 2386 count, 0);
2387 current->backing_dev_info = NULL; 2387 current->backing_dev_info = NULL;
2388 } 2388 }
2389 2389
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index 64b48eade91d..175ce58fbfa3 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -738,7 +738,7 @@ xfs_file_buffered_aio_write(
738write_retry: 738write_retry:
739 trace_xfs_file_buffered_write(ip, count, iocb->ki_pos, 0); 739 trace_xfs_file_buffered_write(ip, count, iocb->ki_pos, 0);
740 ret = generic_file_buffered_write(iocb, iovp, nr_segs, 740 ret = generic_file_buffered_write(iocb, iovp, nr_segs,
741 pos, &iocb->ki_pos, count, 0); 741 pos, count, 0);
742 742
743 /* 743 /*
744 * If we just got an ENOSPC, try to write back all dirty inodes to 744 * If we just got an ENOSPC, try to write back all dirty inodes to
diff --git a/include/linux/fs.h b/include/linux/fs.h
index e677d1e1189f..830e37420f5e 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2397,7 +2397,7 @@ extern ssize_t generic_file_aio_write(struct kiocb *, const struct iovec *, unsi
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, 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, 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);
2402extern ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos); 2402extern ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos);
2403extern int generic_segment_checks(const struct iovec *iov, 2403extern int generic_segment_checks(const struct iovec *iov,
diff --git a/mm/filemap.c b/mm/filemap.c
index ce2246dd90de..9d515a1a2372 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -2183,7 +2183,7 @@ again:
2183 2183
2184ssize_t 2184ssize_t
2185generic_file_buffered_write(struct kiocb *iocb, const struct iovec *iov, 2185generic_file_buffered_write(struct kiocb *iocb, const struct iovec *iov,
2186 unsigned long nr_segs, loff_t pos, loff_t *ppos, 2186 unsigned long nr_segs, loff_t pos,
2187 size_t count, ssize_t written) 2187 size_t count, ssize_t written)
2188{ 2188{
2189 struct file *file = iocb->ki_filp; 2189 struct file *file = iocb->ki_filp;
@@ -2195,7 +2195,7 @@ generic_file_buffered_write(struct kiocb *iocb, const struct iovec *iov,
2195 2195
2196 if (likely(status >= 0)) { 2196 if (likely(status >= 0)) {
2197 written += status; 2197 written += status;
2198 *ppos = pos + status; 2198 iocb->ki_pos = pos + status;
2199 } 2199 }
2200 2200
2201 return written ? written : status; 2201 return written ? written : status;
@@ -2275,8 +2275,7 @@ ssize_t __generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
2275 pos += written; 2275 pos += written;
2276 count -= written; 2276 count -= written;
2277 written_buffered = generic_file_buffered_write(iocb, iov, 2277 written_buffered = generic_file_buffered_write(iocb, iov,
2278 nr_segs, pos, &iocb->ki_pos, count, 2278 nr_segs, pos, count, written);
2279 written);
2280 /* 2279 /*
2281 * If generic_file_buffered_write() retuned a synchronous error 2280 * If generic_file_buffered_write() retuned a synchronous error
2282 * then we want to return the number of bytes which were 2281 * then we want to return the number of bytes which were
@@ -2309,7 +2308,7 @@ ssize_t __generic_file_aio_write(struct kiocb *iocb, const struct iovec *iov,
2309 } 2308 }
2310 } else { 2309 } else {
2311 written = generic_file_buffered_write(iocb, iov, nr_segs, 2310 written = generic_file_buffered_write(iocb, iov, nr_segs,
2312 pos, &iocb->ki_pos, count, written); 2311 pos, count, written);
2313 } 2312 }
2314out: 2313out:
2315 current->backing_dev_info = NULL; 2314 current->backing_dev_info = NULL;