No description
  • C 96.8%
  • Assembly 0.9%
  • Rust 0.7%
  • Shell 0.6%
  • Python 0.5%
  • Other 0.3%
Find a file
Carlos Maiolino 4c6283ec92 xfs: add support for zoned devices
Add support for the new zoned space allocator and thus for zoned devices:
 
     https://zonedstorage.io/docs/introduction/zoned-storage
 
 to XFS. This has been developed for and tested on both SMR hard drives,
 which are the oldest and most common class of zoned devices:
 
    https://zonedstorage.io/docs/introduction/smr
 
 and ZNS SSDs:
 
    https://zonedstorage.io/docs/introduction/zns
 
 It has not been tested with zoned UFS devices, as their current capacity
 points and performance characteristics aren't too interesting for XFS
 use cases (but never say never).
 
 Sequential write only zones are only supported for data using a new
 allocator for the RT device, which maps each zone to a rtgroup which
 is written sequentially.  All metadata and (for now) the log require
 using randomly writable space. This means a realtime device is required
 to support zoned storage, but for the common case of SMR hard drives
 that contain random writable zones and sequential write required zones
 on the same block device, the concept of an internal RT device is added
 which means using XFS on a SMR HDD is as simple as:
 
 $ mkfs.xfs /dev/sda
 $ mount /dev/sda /mnt
 
 When using NVMe ZNS SSDs that do not support conventional zones, the
 traditional multi-device RT configuration is required.  E.g. for an
 SSD with a conventional namespace 1 and a zoned namespace 2:
 
 $ mkfs.xfs /dev/nvme0n1 -o rtdev=/dev/nvme0n2
 $ mount -o rtdev=/dev/nvme0n2 /dev/nvme0n1 /mnt
 
 The zoned allocator can also be used on conventional block devices, or
 on conventional zones (e.g. when using an SMR HDD as the external RT
 device).  For example using zoned XFS on normal SSDs shows very nice
 performance advantages and write amplification reduction for intelligent
 workloads like RocksDB.
 
 Some work is still in progress or planned, but should not affect the
 integration with the rest of XFS or the on-disk format:
 
  - support for quotas
  - support for reflinks
 
 Note that the I/O path already supports reflink, but garbage collection
 isn't refcount aware yet and would unshare shared blocks, thus rendering
 the feature useless.
 -----BEGIN PGP SIGNATURE-----
 
 iQI/BAABCgApFiEEgdbnc3r/njty3Iq9D55TZVIEUYMFAmfFyIcLHGhjaEBsc3Qu
 ZGUACgkQD55TZVIEUYPS/w/9EGxxpEB3D3Md3gw4ZugONktUup3V/2SjI4GPGRn/
 ZzaBywR8UzDCMVWcR3Yzgi90KtU4MNHIDhhzQ++tnbOLsqZ9448qdQLEyVZ+5CG2
 /xW4Znf+zsJ9CgYpYD/nHcMJIArVuZTrUUlQHETW+crrEtaLtzFzGCi3Wnl40nPi
 +micWEnb4Ddyw9sLOYobA5n+k7IZFS6bz2BYkHsqT+0lp1q0JdK1gANTzvTHfda/
 XWmOZggb+y8VVJ8mXN2R0Q0f1MtyYsA3RH1cgS9K7H1nCMqr45uvrSLumOaYpAV7
 tGM/cEy5Lq5yf37R/Zz3W85pJJmLsGYJ0YFGgGNcVVmY/Hr1D8hmMdu9Osny9ULV
 j7QFVLP6bP17/y0cdYKp3uF9QV0HjmcanZdzdY/Ndd+wY1LeYKERojavo/5ymdXF
 0rckesfxjxCjBwgPDYpbawhA9ok1gzotm9s9aCh2UWMY5qwUbVDzAUIeMPREVA/R
 9XSFgPkkdPxkHHWqZBZ2fEv6ucGRNTIPTMX92o4zZj3Zd6CTpXC+KIK1MNIcSnkl
 rmBfPQ5e/MDcaE9OBfFjd637+3cUDV2UcEb0m7GOv2bQhztreLjR7OghFQhySkUw
 iQULym1UVdcT72NPxORSIafa06EuhTllGvCHXDxDdZ2dCujMSkFQKZfARr+R+pqL
 ll8=
 =l2Bw
 -----END PGP SIGNATURE-----

Merge tag 'xfs-zoned-allocator-2025-03-03' of git://git.infradead.org/users/hch/xfs into xfs-6.15-zoned_devices

xfs: add support for zoned devices

Add support for the new zoned space allocator and thus for zoned devices:

    https://zonedstorage.io/docs/introduction/zoned-storage

to XFS. This has been developed for and tested on both SMR hard drives,
which are the oldest and most common class of zoned devices:

   https://zonedstorage.io/docs/introduction/smr

and ZNS SSDs:

   https://zonedstorage.io/docs/introduction/zns

It has not been tested with zoned UFS devices, as their current capacity
points and performance characteristics aren't too interesting for XFS
use cases (but never say never).

Sequential write only zones are only supported for data using a new
allocator for the RT device, which maps each zone to a rtgroup which
is written sequentially.  All metadata and (for now) the log require
using randomly writable space. This means a realtime device is required
to support zoned storage, but for the common case of SMR hard drives
that contain random writable zones and sequential write required zones
on the same block device, the concept of an internal RT device is added
which means using XFS on a SMR HDD is as simple as:

$ mkfs.xfs /dev/sda
$ mount /dev/sda /mnt

When using NVMe ZNS SSDs that do not support conventional zones, the
traditional multi-device RT configuration is required.  E.g. for an
SSD with a conventional namespace 1 and a zoned namespace 2:

$ mkfs.xfs /dev/nvme0n1 -o rtdev=/dev/nvme0n2
$ mount -o rtdev=/dev/nvme0n2 /dev/nvme0n1 /mnt

The zoned allocator can also be used on conventional block devices, or
on conventional zones (e.g. when using an SMR HDD as the external RT
device).  For example using zoned XFS on normal SSDs shows very nice
performance advantages and write amplification reduction for intelligent
workloads like RocksDB.

Some work is still in progress or planned, but should not affect the
integration with the rest of XFS or the on-disk format:

 - support for quotas
 - support for reflinks

Note that the I/O path already supports reflink, but garbage collection
isn't refcount aware yet and would unshare shared blocks, thus rendering
the feature useless.
History 2025-03-04 11:25:46 +01:00
arch ARM: 2025-02-09 09:41:38 -08:00
block block-6.14-20250131 2025-01-31 11:49:30 -08:00
certs sign-file,extract-cert: use pkcs11 provider for OPENSSL MAJOR >= 3 2024-09-20 19:52:48 +03:00
crypto treewide: const qualify ctl_tables where applicable 2025-01-28 13:48:37 +01:00
Documentation Merge branch 'vfs-6.15.iomap' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs into xfs-6.15-merge 2025-03-03 13:01:06 +01:00
drivers Additional power management fix for 6.14-rc2 2025-02-09 09:47:06 -08:00
fs xfs: export max_open_zones in sysfs 2025-03-03 08:17:10 -07:00
include Merge branch 'vfs-6.15.iomap' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs into xfs-6.15-merge 2025-03-03 13:01:06 +01:00
init Kbuild updates for v6.14 2025-01-31 12:07:07 -08:00
io_uring Fix a dangling pointer bug in the futex code used by the 2025-02-08 10:54:11 -08:00
ipc treewide: const qualify ctl_tables where applicable 2025-01-28 13:48:37 +01:00
kernel seccomp fix for v6.14-rc2 2025-02-08 14:04:21 -08:00
lib hardening fixes for v6.14-rc2 2025-02-08 14:12:17 -08:00
LICENSES LICENSES: add 0BSD license text 2024-09-01 20:43:24 -07:00
mm assorted stuff for this merge window 2025-02-01 15:07:56 -08:00
net vfs-6.14-rc2.fixes 2025-02-07 09:22:31 -08:00
rust rust: kbuild: do not export generated KASAN ODR symbols 2025-02-06 19:47:04 +01:00
samples AT_EXECVE_CHECK update for v6.14-rc1 (fix1) 2025-01-31 17:12:31 -08:00
scripts Kbuild fixes for v6.14 2025-02-09 10:05:32 -08:00
security treewide: const qualify ctl_tables where applicable 2025-01-28 13:48:37 +01:00
sound sound fixes for 6.14-rc1 2025-01-31 09:17:02 -08:00
tools ARM: 2025-02-09 09:41:38 -08:00
usr kbuild: Drop support for include/asm-<arch> in headers_check.pl 2024-12-21 11:43:17 +09:00
virt KVM: remove kvm_arch_post_init_vm 2025-02-04 11:27:45 -05:00
.clang-format clang-format: Update with v6.11-rc1's for_each macro list 2024-08-02 13:20:31 +02:00
.clippy.toml rust: give Clippy the minimum supported Rust version 2025-01-10 00:17:25 +01:00
.cocciconfig scripts: add Linux .cocciconfig for coccinelle 2016-07-22 12:13:39 +02:00
.editorconfig .editorconfig: remove trim_trailing_whitespace option 2024-06-13 16:47:52 +02:00
.get_maintainer.ignore MAINTAINERS: Retire Ralf Baechle 2024-11-12 15:48:59 +01:00
.gitattributes .gitattributes: set diff driver for Rust source code files 2023-05-31 17:48:25 +02:00
.gitignore rust: use host dylib naming convention to support macOS 2025-01-10 01:01:24 +01:00
.mailmap 21 hotfixes. 8 are cc:stable and the remainder address post-6.13 issues. 2025-02-01 09:49:20 -08:00
.rustfmt.toml rust: add .rustfmt.toml 2022-09-28 09:02:20 +02:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS MAINTAINERS: Move Pavel to kernel.org address 2025-02-07 09:12:33 -08:00
Kbuild Kbuild updates for v6.1 2022-10-10 12:00:45 -07:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS gpio fixes for v6.14-rc2 2025-02-07 09:50:33 -08:00
Makefile Linux 6.14-rc2 2025-02-09 12:45:03 -08:00
README README: Fix spelling 2024-03-18 03:36:32 -06:00

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the reStructuredText markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.