On Sat, Sep 19, 2020 at 07:43:08AM +0100, Christoph Hellwig wrote: > On Sat, Sep 19, 2020 at 07:39:08AM +0100, Christoph Hellwig wrote: > > I think just adding the completion and status to struct > > iomap_readpage_ctx would be a lot easier to follow, at the cost > > of bloating the structure a bit for the readahead case. If we > > are realy concerned about that, the completion could be directly > > on the iomap_readpage stack and we'd pass a pointer. > > Anbother option would be to chain the bios and use submit_bio_wait. > That would take care of the completion and the status propagation > withour extra fields and extra code in iomap. But it wouldn't let us mark some blocks on the page as Uptodate, would it? As I read the code, chaining two BIOs together will call the parent's bi_end_io only once both the child and the parent BIOs have completed, but at the point the parent's bi_end_io is called, the child bio has already been put and we can't iterate over its bio_vec. Maybe I misread the code; bio chaining does not seem to be well documented.