On Fri, Feb 26, 2021 at 06:16:26AM +0100, Christoph Hellwig wrote: > On Fri, Feb 26, 2021 at 10:32:50AM +1100, Stephen Rothwell wrote: > > > > - return filemap_read(iocb, to, ret); > > > > + if (iocb->ki_flags & IOCB_NOWAIT) > > > > + iocb->ki_flags |= IOCB_NOIO; > > > > + > > > > - ret = generic_file_buffered_read(iocb, to, ret); > > > > ++ ret = filemap_read(iocb, to, ret); > > > > + > > > > + if (iocb->ki_flags & IOCB_NOWAIT) { > > > > + iocb->ki_flags &= ~IOCB_NOIO; > > > > + if (ret == 0) > > > > + ret = -EAGAIN; > > > > + } > > > > + > > > > + return ret; > > > > } > > I think the above code looks completely bogus. Instead whatever code > in btrfs hecks for IOCB_NOIO to avoid blocking readahead should also > check IOCB_NOWAIT. Thanks for the comment, I've removed the patch from for-next and notified the authors.