mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 15:03:53 +02:00
block: ensure discard_granularity is zero when discard is not supported
[ Upstream commitfad6551fcf
] Documentation/ABI/stable/sysfs-block states: What: /sys/block/<disk>/queue/discard_granularity [...] A discard_granularity of 0 means that the device does not support discard functionality. but this got broken when sorting out the block limits updates. Fix this by setting the discard_granularity limit to zero when the combined max_discard_sectors is zero. Fixes:3c407dc723
("block: default the discard granularity to sector size") Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Link: https://lore.kernel.org/r/20250731152228.873923-1-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
92965c3036
commit
4632f6a755
|
@ -342,12 +342,19 @@ int blk_validate_limits(struct queue_limits *lim)
|
|||
lim->max_discard_sectors =
|
||||
min(lim->max_hw_discard_sectors, lim->max_user_discard_sectors);
|
||||
|
||||
/*
|
||||
* When discard is not supported, discard_granularity should be reported
|
||||
* as 0 to userspace.
|
||||
*/
|
||||
if (lim->max_discard_sectors)
|
||||
lim->discard_granularity =
|
||||
max(lim->discard_granularity, lim->physical_block_size);
|
||||
else
|
||||
lim->discard_granularity = 0;
|
||||
|
||||
if (!lim->max_discard_segments)
|
||||
lim->max_discard_segments = 1;
|
||||
|
||||
if (lim->discard_granularity < lim->physical_block_size)
|
||||
lim->discard_granularity = lim->physical_block_size;
|
||||
|
||||
/*
|
||||
* By default there is no limit on the segment boundary alignment,
|
||||
* but if there is one it can't be smaller than the page size as
|
||||
|
|
Loading…
Reference in New Issue
Block a user