diff --git a/fs/ext4/file.c b/fs/ext4/file.c index c457c8517f0f..1fe74735b4e4 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -608,7 +608,10 @@ static ssize_t ext4_dio_write_iter(struct kiocb *iocb, struct iov_iter *from) iomap_ops = &ext4_iomap_overwrite_ops; ret = iomap_dio_rw(iocb, from, iomap_ops, &ext4_dio_write_ops, dio_flags, NULL, 0); - WARN_ON_ONCE(ret == -EAGAIN && !(iocb->ki_flags & IOCB_NOWAIT)); + if (ret == -EAGAIN) { + WARN_ON(dio_flags == IOMAP_DIO_OVERWRITE_ONLY); + WARN_ON(!(iocb->ki_flags & IOCB_NOWAIT)); + } if (ret == -ENOTBLK) ret = 0;