diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 32d0b883e74f340d442754a5a87b82629b96658e..a0ffed34b85d23edb825756d424c00578124e182 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);