On Tue, Sep 26, 2023 at 6:31 PM Jens Axboe <axboe@xxxxxxxxx> wrote: > > On 9/25/23 4:43 AM, Amir Goldstein wrote: > > Jens, > > > > Are there any IOCB flags that overlayfs (or backing_aio) need > > to set or clear, besides IOCB_DIO_CALLER_COMP, that > > would prevent calling completion from interrupt context? > > There are a few flags that may get set (like WAITQ or ALLOC_CACHE), but > I think that should all work ok as-is as the former is just state in > that iocb and that is persistent (and only for the read path), and > ALLOC_CACHE should just be propagated. > > > Or is the proper way to deal with this is to defer completion > > to workqueue in the common backing_aio helpers that > > I am re-factoring from overlayfs? > > No, deferring to a workqueue would defeat the purpose of the flag, which > is telling you that the caller will ensure that the end_io callback will > happen from task context and need not be deferred to a workqueue. I can > take a peek at how to wire it up properly for overlayfs, have some > travel coming up in a few days. > No worries, this is not urgent. I queued a change to overlayfs to take a spin lock on completion for the 6.7 merge window, so if I can get a ACK/NACK until then It would be nice. https://lore.kernel.org/linux-unionfs/20230912173653.3317828-2-amir73il@xxxxxxxxx/ > > IIUC, that could also help overlayfs support > > IOCB_DIO_CALLER_COMP? > > > > Is my understanding correct? > > If you peek at fs.h and find the CALLER_COMP references, it'll tell you > a bit about how it works. This is new with the 6.6-rc kernel, there's a > series of patches from me that went in through the iomap tree that > hooked that up. Those commits have an explanation as well. > Sorry, I think my question wasn't clear. I wasn't asking specifically about CALLER_COMP. Zhang Tianci commented in review (above) that I am not allowed to take the inode spinlock in the ovl io completion context, because it may be called from interrupt. I wasn't sure if his statement was correct, so this is what I am asking - whether overlayfs can set any IOCB flags that will force the completion to be called from task context - this is kind of the opposite of CALLER_COMP. Let me know if I wasn't able to explain myself. I am not that fluent in aio jargon. Thanks, Amir.