diff options
-rw-r--r-- | fs/ceph/file.c | 3 | ||||
-rw-r--r-- | fs/ocfs2/file.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_file.c | 2 | ||||
-rw-r--r-- | include/linux/fs.h | 2 | ||||
-rw-r--r-- | mm/filemap.c | 9 |
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( | |||
738 | write_retry: | 738 | write_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 | |||
2397 | extern ssize_t generic_file_direct_write(struct kiocb *, const struct iovec *, | 2397 | extern 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); |
2399 | extern ssize_t generic_file_buffered_write(struct kiocb *, const struct iovec *, | 2399 | extern 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); |
2401 | extern ssize_t do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos); | 2401 | extern ssize_t do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos); |
2402 | extern ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos); | 2402 | extern ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos); |
2403 | extern int generic_segment_checks(const struct iovec *iov, | 2403 | extern 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 | ||
2184 | ssize_t | 2184 | ssize_t |
2185 | generic_file_buffered_write(struct kiocb *iocb, const struct iovec *iov, | 2185 | generic_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 | } |
2314 | out: | 2313 | out: |
2315 | current->backing_dev_info = NULL; | 2314 | current->backing_dev_info = NULL; |