Commit bafea1c5 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

sd: also set max_user_sectors when setting max_sectors

sd can set a max_sectors value that is lower than the max_hw_sectors
limit based on the block limits VPD page.   While this is rather unusual,
it used to work until the max_user_sectors field was split out to cleanly
deal with conflicting hardware and user limits when the hardware limit
changes.  Also set max_user_sectors to ensure the limit can properly be
stacked.

Fixes: 4f563a64 ("block: add a max_user_discard_sectors queue limit")
Reported-by: default avatarMike Snitzer <snitzer@kernel.org>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Acked-by: default avatarMike Snitzer <snitzer@kernel.org>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Link: https://lore.kernel.org/r/20240523182618.602003-2-hch@lst.deSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 233e27b4
......@@ -3700,8 +3700,10 @@ static int sd_revalidate_disk(struct gendisk *disk)
*/
if (sdkp->first_scan ||
q->limits.max_sectors > q->limits.max_dev_sectors ||
q->limits.max_sectors > q->limits.max_hw_sectors)
q->limits.max_sectors > q->limits.max_hw_sectors) {
q->limits.max_sectors = rw_max;
q->limits.max_user_sectors = rw_max;
}
sdkp->first_scan = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment