On Thu, Dec 02, 2021 at 12:47:41PM -0700, Jens Axboe wrote: > When we attempt to merge off the cached request path, we return NULL > if successful. This makes the caller believe that it's should allocate > a new request, and hence we end up with the bio both merged and associated > with a new request. This, predictably, leads to all sorts of crashes. > > Pass in a pointer to the bio pointer, and clear it for the merge case. > Then the caller knows that the bio is already queued, and no new requests > need to get allocated. > > Fixes: 5b13bc8a3fd5 ("blk-mq: cleanup request allocation") > Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> Io hang in io_uring workload can't be triggered any more with this patch: Reviewed-by: Ming Lei <ming.lei@xxxxxxxxxx> -- Ming