block: respect queue limit of max discard segment
authorMing Lei <ming.lei@redhat.com>
Mon, 17 Aug 2020 09:52:39 +0000 (17:52 +0800)
committerJens Axboe <axboe@kernel.dk>
Mon, 17 Aug 2020 13:59:41 +0000 (06:59 -0700)
commit943b40c832beb71115e38a1c4d99b640b5342738
treebad51d9f93dd0e6f0cd7e4acec5016f6acb62dab
parentbcb21c8cc9947286211327d663ace69f07d37a76
block: respect queue limit of max discard segment

When queue_max_discard_segments(q) is 1, blk_discard_mergable() will
return false for discard request, then normal request merge is applied.
However, only queue_max_segments() is checked, so max discard segment
limit isn't respected.

Check max discard segment limit in the request merge code for fixing
the issue.

Discard request failure of virtio_blk is fixed.

Fixes: 69840466086d ("block: fix the DISCARD request merge")
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Cc: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-merge.c