On Mon, Nov 25, 2019 at 01:38:38PM +0100, Miklos Szeredi wrote: > On Mon, Nov 18, 2019 at 3:24 AM Masayoshi Mizuma <msys.mizuma@xxxxxxxxx> wrote: > > > > From: Masayoshi Mizuma <m.mizuma@xxxxxxxxxxxxxx> > > > > exit_aio() is sometimes stuck in wait_for_completion() after aio is issued > > with direct IO and the task receives a signal. > > > > That is because kioctx in mm->ioctx_table is in use by aio_kiocb. > > aio_kiocb->ki_refcnt is 1 at that time. That means iocb_put() isn't > > called correctly. > > > > fuse_get_req() returns as -EINTR when it's blocked and receives a signal. > > fuse_direct_IO() deals with the -EINTER as -EIOCBQUEUED and returns as > > -EIOCBQUEUED even though the aio isn't queued. > > As the result, aio_rw_done() doesn't handle the error, so iocb_put() isn't > > called via aio_complete_rw(), which is the callback. > > Hi, > > Thanks for the report. > > Can you please test the attached patch (without your patch)? The patch you attached works well, thanks! I tested it with virtiofs. Should I post the patch? Or could you take care of it? Let me know. Thanks! Masa