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.