On Sat, Oct 29, 2022 at 05:45:45PM +0100, Al Viro wrote: > completion (in NULL_Q_BIO case, at least). What happens if request > gets split and split-off part finishes first with an error? AFAICS, > its ->bi_status will be copied to parent (original bio, the one that > covers the tail). Now the IO on the original bio is over as well > and we hit drivers/block/null_blk/main.c:end_cmd(). Suppose this > part succeeds; won't we end up overwriting ->bi_status with zero > and assuming that the entire thing had succeeded, despite the > (now lost) error on the split-off part? As a rule of thumb drives should never set bi_status to 0, so null_blk here has a bug. What is missing everywhere is proper memory barriers, though.