On Thu, May 05, 2022 at 05:45:57PM +0200, Christoph Hellwig wrote: > On Thu, May 05, 2022 at 08:41:26AM -0700, Darrick J. Wong wrote: > > > + */ > > > + iomi.private = iocb->private; > > > + WRITE_ONCE(iocb->private, NULL); > > > > Do we need to transfer it back after the bio completes? Or is it a > > feature that iocb->private changes to the bio? > > No need to transfer it back. It ist just a creative way to pass private > data in. Initially I just added yet another argument to iomap_dio_rw, > and maybe I should just go back to that to make the things easier to > follow. Hmm. Who owns iocb->private? AFAICT there are two users of it -- the directio code uses it to store bios for polling; and then there's ocfs2, which apparently uses it for iocb lock state(!) flags. Getting back to iomap, I think the comment before __iomap_dio_rw should state that iocb->private will be transferred to iter->private to make that relationship more obvious, in case ocfs2 ever stumbles into iomap and explodes on impact. --D