Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

authored by

Benjamin Marzinski and committed by
Mikulas Patocka
ad320ae2 121218be

+5 -1
+5 -1
drivers/md/dm-zone.c
··· 347 347 348 348 /* 349 349 * Check if zone append is natively supported, and if not, set the 350 - * mapped device queue as needing zone append emulation. 350 + * mapped device queue as needing zone append emulation. If zone 351 + * append is natively supported, make sure that 352 + * max_hw_zone_append_sectors is not set to 0. 351 353 */ 352 354 WARN_ON_ONCE(queue_is_mq(q)); 353 355 if (!dm_table_supports_zone_append(t)) 354 356 lim->max_hw_zone_append_sectors = 0; 357 + else if (lim->max_hw_zone_append_sectors == 0) 358 + lim->max_hw_zone_append_sectors = lim->max_zone_append_sectors; 355 359 356 360 /* 357 361 * Determine the max open and max active zone limits for the mapped