On Sat, May 21, 2022 at 11:56:26AM -0700, Gwendal Grignou wrote:
From: Ming Lei ming.lei@redhat.com
When merging one bio to request, if they are discard IO and the queue supports multi-range discard, we need to return ELEVATOR_DISCARD_MERGE because both block core and related drivers(nvme, virtio-blk) doesn't handle mixed discard io merge(traditional IO merge together with discard merge) well.
Fix the issue by returning ELEVATOR_DISCARD_MERGE in this situation, so both blk-mq and drivers just need to handle multi-range discard.
Reported-by: Oleksandr Natalenko oleksandr@natalenko.name Signed-off-by: Ming Lei ming.lei@redhat.com Tested-by: Oleksandr Natalenko oleksandr@natalenko.name Fixes: 2705dfb20947 ("block: fix discard request merge") Link: https://lore.kernel.org/r/20210729034226.1591070-1-ming.lei@redhat.com Signed-off-by: Jens Axboe axboe@kernel.dk
commit 866663b7b52d2 upstream.
Similar to commit 87aa69aa10b42 ("block: return ELEVATOR_DISCARD_MERGE if possible") in 5.10 kernel.
Conflicts: block/blk-merge.c: function at a different place. block/mq-deadline-main.c: not in 5.4, use mq-deadline.c instead.
Cc: stable@vger.kernel.org # 5.4.y Signed-off-by: Gwendal Grignou gwendal@chromium.org
Now queued up, thanks.
greg k-h