diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 32d0b883e74f..a0ffed34b85d 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -2913,10 +2913,12 @@ fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter) } if (io->async) { + bool blocking = io->blocking; + fuse_aio_complete(io, ret < 0 ? ret : 0, -1); /* we have a non-extending, async request, so return */ - if (!io->blocking) + if (!blocking) return -EIOCBQUEUED; wait_for_completion(&wait);