aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext4/file.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2016-04-07 11:52:01 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2016-05-01 19:58:39 -0400
commite259221763a40403d5bb232209998e8c45804ab8 (patch)
tree6f940ba17f38b693e495ad5267b1988dd66c9c0f /fs/ext4/file.c
parentdde0c2e79848298cc25621ad080d47f94dbd7cce (diff)
fs: simplify the generic_write_sync prototype
The kiocb already has the new position, so use that. The only interesting case is AIO, where we currently don't bother updating ki_pos. We're about to free the kiocb after we're done, so we might as well update it to make everyone's life simpler. While we're at it also return the bytes written argument passed in if we were successful so that the boilerplate error switch code in the callers can go away. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/ext4/file.c')
-rw-r--r--fs/ext4/file.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index 1417e129be51..00ff6912adb3 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -169,13 +169,8 @@ ext4_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
169 ret = __generic_file_write_iter(iocb, from); 169 ret = __generic_file_write_iter(iocb, from);
170 inode_unlock(inode); 170 inode_unlock(inode);
171 171
172 if (ret > 0) { 172 if (ret > 0)
173 ssize_t err; 173 ret = generic_write_sync(iocb, ret);
174
175 err = generic_write_sync(iocb, iocb->ki_pos - ret, ret);
176 if (err < 0)
177 ret = err;
178 }
179 if (o_direct) 174 if (o_direct)
180 blk_finish_plug(&plug); 175 blk_finish_plug(&plug);
181 176