1 ext4: factor out common code in ext4_file_write()
3 This shouldn't change any logic flow; just delete duplicated code.
5 Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
7 fs/ext4/file.c | 37 +++++++++++++------------------------
8 1 file changed, 13 insertions(+), 24 deletions(-)
10 diff --git a/fs/ext4/file.c b/fs/ext4/file.c
11 index 5005391..6ac33da 100644
14 @@ -98,6 +98,7 @@ ext4_file_write(struct kiocb *iocb, const struct iovec *iov,
15 struct file *file = iocb->ki_filp;
16 struct inode *inode = file_inode(iocb->ki_filp);
18 + int o_direct = file->f_flags & O_DIRECT;
20 size_t length = iov_length(iov, nr_segs);
22 @@ -122,7 +123,7 @@ ext4_file_write(struct kiocb *iocb, const struct iovec *iov,
26 - if (unlikely(iocb->ki_filp->f_flags & O_DIRECT)) {
28 struct mutex *aio_mutex = NULL;
30 /* Unaligned direct AIO must be serialized; see comment above */
31 @@ -169,33 +170,21 @@ ext4_file_write(struct kiocb *iocb, const struct iovec *iov,
32 if (err == len && (map.m_flags & EXT4_MAP_MAPPED))
36 - ret = __generic_file_aio_write(iocb, iov, nr_segs,
38 - mutex_unlock(&inode->i_mutex);
43 - err = generic_write_sync(file, iocb->ki_pos - ret, ret);
47 - blk_finish_plug(&plug);
50 mutex_lock(&inode->i_mutex);
51 - ret = __generic_file_aio_write(iocb, iov, nr_segs,
53 - mutex_unlock(&inode->i_mutex);
57 + ret = __generic_file_aio_write(iocb, iov, nr_segs, &iocb->ki_pos);
58 + mutex_unlock(&inode->i_mutex);
60 - err = generic_write_sync(file, iocb->ki_pos - ret, ret);
67 + err = generic_write_sync(file, iocb->ki_pos - ret, ret);
72 + blk_finish_plug(&plug);