mirror O_APPEND and O_DIRECT into iocb->ki_flags
... avoiding write_iter/fcntl races. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -95,7 +95,7 @@ ext4_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
|
||||
struct inode *inode = file_inode(iocb->ki_filp);
|
||||
struct mutex *aio_mutex = NULL;
|
||||
struct blk_plug plug;
|
||||
int o_direct = io_is_direct(file);
|
||||
int o_direct = iocb->ki_flags & IOCB_DIRECT;
|
||||
int overwrite = 0;
|
||||
ssize_t ret;
|
||||
|
||||
@@ -106,7 +106,7 @@ ext4_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
|
||||
if (o_direct &&
|
||||
ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS) &&
|
||||
!is_sync_kiocb(iocb) &&
|
||||
(file->f_flags & O_APPEND ||
|
||||
(iocb->ki_flags & IOCB_APPEND ||
|
||||
ext4_unaligned_aio(inode, from, iocb->ki_pos))) {
|
||||
aio_mutex = ext4_aio_mutex(inode);
|
||||
mutex_lock(aio_mutex);
|
||||
|
Reference in New Issue
Block a user