diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 61c07bbeba03d8043a22c538515477da16ffc15d..2659f0b1d0525c647129d0c33cf9df9b9de53a6c 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -3905,6 +3905,13 @@ static ssize_t ext4_direct_IO(struct kiocb *iocb, struct iov_iter *iter) if (ext4_has_inline_data(inode)) return 0; + /* + * 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); + trace_ext4_direct_IO_enter(inode, offset, count, iov_iter_rw(iter)); if (iov_iter_rw(iter) == READ) ret = ext4_direct_IO_read(iocb, iter);