> - 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.