On 7/19/23 10:51?PM, Christoph Hellwig wrote: >> - if (dio->flags & IOMAP_DIO_WRITE) { >> - struct inode *inode = file_inode(iocb->ki_filp); >> - >> - WRITE_ONCE(iocb->private, NULL); >> - INIT_WORK(&dio->aio.work, iomap_dio_complete_work); >> - queue_work(inode->i_sb->s_dio_done_wq, &dio->aio.work); >> - } else { >> + if (dio->flags & IOMAP_DIO_INLINE_COMP) { >> WRITE_ONCE(iocb->private, NULL); >> iomap_dio_complete_work(&dio->aio.work); >> + goto release_bio; >> } > > I would have properly just structured the code to match this in the > lat path with a > > if (!(dio->flags & IOMAP_DIO_WRITE)) { > > so that this becomes trivial. But that's just nitpicking and the > result looks good to me. Ends up being done that way anyway with the rework of patch 1 to put the non-write side first, so that's what it looks like now in v3. -- Jens Axboe