-
- Downloads
block: return ELEVATOR_DISCARD_MERGE if possible
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: 2705dfb2 ("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>
Showing
- block/bfq-iosched.c 3 additions, 0 deletionsblock/bfq-iosched.c
- block/blk-merge.c 0 additions, 16 deletionsblock/blk-merge.c
- block/elevator.c 3 additions, 0 deletionsblock/elevator.c
- block/mq-deadline-main.c 2 additions, 0 deletionsblock/mq-deadline-main.c
- include/linux/blkdev.h 16 additions, 0 deletionsinclude/linux/blkdev.h
Loading
Please register or sign in to comment