diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 61c07bbeba03d8043a22c538515477da16ffc15d..8f38837f41f3f88fbb6540b30b6d11218d1e1dc1 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3677,6 +3677,13 @@ static ssize_t ext4_direct_IO_write(struct kiocb *iocb, struct iov_iter *iter) int orphan = 0; handle_t *handle; + /* + * Make sure inline data cannot be created anymore since we are going + * to allocate blocks for DIO. We know the inode does not have any + * inline data now because ext4_dio_supported() checked for that. + */ + ext4_clear_inode_state(inode, EXT4_STATE_MAY_INLINE_DATA); + if (final_size > inode->i_size || final_size > ei->i_disksize) { /* Credits for sb + inode write */ handle = ext4_journal_start(inode, EXT4_HT_INODE, 2);