kernel_samsung_a53x/Documentation
Damien Le Moal 08e96cffc0 block: introduce zone_write_granularity limit
[ Upstream commit a805a4fa4fa376bbc145762bb8b09caa2fa8af48 ]

Per ZBC and ZAC specifications, host-managed SMR hard-disks mandate that
all writes into sequential write required zones be aligned to the device
physical block size. However, NVMe ZNS does not have this constraint and
allows write operations into sequential zones to be aligned to the
device logical block size. This inconsistency does not help with
software portability across device types.

To solve this, introduce the zone_write_granularity queue limit to
indicate the alignment constraint, in bytes, of write operations into
zones of a zoned block device. This new limit is exported as a
read-only sysfs queue attribute and the helper
blk_queue_zone_write_granularity() introduced for drivers to set this
limit.

The function blk_queue_set_zoned() is modified to set this new limit to
the device logical block size by default. NVMe ZNS devices as well as
zoned nullb devices use this default value as is. The scsi disk driver
is modified to execute the blk_queue_zone_write_granularity() helper to
set the zone write granularity of host-managed SMR disks to the disk
physical block size.

The accessor functions queue_zone_write_granularity() and
bdev_zone_write_granularity() are also introduced.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@edc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Stable-dep-of: c8f6f88d2592 ("block: Clear zone limits for a non-zoned stacked queue")
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-19 09:22:16 +01:00
..
ABI net: sysfs: Fix /sys/class/net/<iface> path for statistics 2024-11-18 12:13:28 +01:00
accounting Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
admin-guide x86/cpu: Support AMD Automatic IBRS 2024-11-19 09:22:13 +01:00
arm Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
arm64 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
block block: introduce zone_write_granularity limit 2024-11-19 09:22:16 +01:00
bpf Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cdrom Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
core-api Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cpu-freq Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
crypto Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dev-tools Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
device-mapper Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
devicetree dt-bindings: nvmem: mxs-ocotp: Document fsl,ocotp 2024-11-18 12:12:01 +01:00
doc-guide Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
driver-api Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
fault-injection Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
fb Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
features Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
filesystems rename(): fix the locking of subdirectories 2024-11-18 12:12:59 +01:00
firmware-guide Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
firmware_class Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
fpga Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gpu Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hid Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
hwmon Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
i2c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ia64 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ide Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
iio Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
infiniband Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
input Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
isdn Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kbuild Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kernel-hacking Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
leds Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
litmus-tests Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
livepatch Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
locking Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
m68k Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
maintainer Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mhi Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mips Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
misc-devices Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
netlabel Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
networking net: change accept_ra_min_rtr_lft to affect all RA lifetimes 2024-11-08 11:25:47 +01:00
nios2 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
nvdimm Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
openrisc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
parisc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
PCI Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pcmcia Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
power Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
powerpc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
process overflow: Implement size_t saturating arithmetic helpers 2024-11-18 11:42:47 +01:00
RCU Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
riscv Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
s390 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
scheduler Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
scsi Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
security Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sh Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sound ASoC: doc: Fix undefined SND_SOC_DAPM_NOPM argument 2024-11-18 12:13:17 +01:00
sparc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sphinx Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sphinx-static Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
spi Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
staging Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
target Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
timers Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
translations Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
usb Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
userspace-api Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
virt Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vm Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
w1 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
watchdog Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
x86 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
xtensa Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
asm-annotations.rst Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
atomic_bitops.txt Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
atomic_t.txt Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Changes Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
CodingStyle Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
conf.py Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
COPYING-logo Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
docutils.conf Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dontdiff Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
index.rst Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
logo.gif Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
memory-barriers.txt Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
SubmittingPatches Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
watch_queue.rst Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00