mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 23:22:31 +02:00
dm: fix native zone append devices on top of emulated ones
If a DM device that can pass down zone append commands is stacked on top of a device that emulates zone append commands, it will allocate zone append emulation resources, even though it doesn't use them. This is because the underlying device will have max_hw_zone_append_sectors set to 0 to request zone append emulation. When the DM device is stacked on top of it, it will inherit that max_hw_zone_append_sectors limit, despite being able to pass down zone append bios. Solve this by making sure max_hw_zone_append_sectors is non-zero for DM devices that do not need zone append emulation. Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Tested-by: Damien Le Moal <dlemoal@kernel.org> Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
This commit is contained in:
parent
121218bef4
commit
ad320ae276
|
|
@ -347,11 +347,15 @@ int dm_set_zones_restrictions(struct dm_table *t, struct request_queue *q,
|
|||
|
||||
/*
|
||||
* Check if zone append is natively supported, and if not, set the
|
||||
* mapped device queue as needing zone append emulation.
|
||||
* mapped device queue as needing zone append emulation. If zone
|
||||
* append is natively supported, make sure that
|
||||
* max_hw_zone_append_sectors is not set to 0.
|
||||
*/
|
||||
WARN_ON_ONCE(queue_is_mq(q));
|
||||
if (!dm_table_supports_zone_append(t))
|
||||
lim->max_hw_zone_append_sectors = 0;
|
||||
else if (lim->max_hw_zone_append_sectors == 0)
|
||||
lim->max_hw_zone_append_sectors = lim->max_zone_append_sectors;
|
||||
|
||||
/*
|
||||
* Determine the max open and max active zone limits for the mapped
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user