SPDK v24.09: fsdev, NVMe-oF TCP interrupt mode
accel
Added spdk_accel_submit_compress_ext() and spdk_accel_submit_decompress_ext() API. They differ
from the non-ext variants in that these functions allow users to specify a compression algorithm and
compression level.
Added spdk_accel_get_compress_level_range() to get the valid level range of a given compression
algorithm.
Added API to generate and verify DIX.
Added append version of dif_verify, dif_verify_copy, dif_generate, and dif_generate_copy.
Added support for lz4 compression.
bdev
spdk_bdev_io_get_aux_buf and spdk_bdev_io_put_aux_buf are deprecated and
will be removed in the 25.01 release. We do not believe these are in use currently.
bdev_compress
Added support for specifying compression algorithm and level.
bdev_nvme
Introduced new header file /module/bdev/nvme.h and added public APIs spdk_bdev_nvme_create,
spdk_bdev_nvme_set_multipath_policy and spdk_bdev_nvme_get_default_ctrlr_opts
to get connectivity and multipathing capabilities of bdev_nvme.
Added bdev_nvme_set_keys RPC to change DH-HMAC-CHAP keys and force reauthentication of all qpairs
of a controller.
dif
Each element in enum spdk_dif_pi_format was subtracted by 1 to match the definition
of the Protection Information Format in the NVMe specification. This is necessary change
but breaks ABI compatibility. Please recompile your application if you added code using
this enum of older SPDK.
dma
Added spdk_memory_domain_transfer_data() function to transfer data between two memory domains.
env
Added spdk_env_core_get_smt_cpuset() API to get the list of SMT sibling
cores for a given core ID.
Added spdk_pci_device_get_numa_id(), spdk_env_get_numa_id(), and SPDK_ENV_NUMA_ID_ANY to
replace socket_id with numa_id when referring to a NUMA node.
Added spdk_env_get_first_numa_id(), spdk_env_get_last_numa_id(), spdk_env_get_next_numa_id(),
and SPDK_ENV_FOREACH_NUMA_ID() API to iterate over available NUMA nodes in a system.
Added enforce_numa option to spdk_env_opts. This option forces all hugepage memory
allocations to allocate memory only from the specified NUMA node without trying to fallback to other
NUMA nodes if it fails.
env_dpdk
spdk_get_tid is added to get the tid of the current thread.
event
The framework_get_reactors RPC method supports getting pid and tid.
fsdev
Added the fsdev library providing a filesystem abstraction.
fuse_dispatcher
Added the fuse_dispatcher library that manages fsdevs and implements FUSE <-> fsdev API
translation.
idxd
Added spdk_idxd_submit_dix_generate() function to generate DIX using DSA.
nvme
Added spdk_nvme_ctrlr_set_keys(), spdk_nvme_ctrlr_authenticate(), and
spdk_nvme_qpair_authenticate() API to change the DH-HMAC-CHAP keys of a given controller and force
reauthentication on its qpairs.
nvmf
Added support for interrupt mode in the NVMe-of TCP transport.
Enable iobuf based queuing for nvmf requests when there is not enough free buffers available.
Perspective from the user of the spdk_nvmf_request_get_buffers() API is that whenever all iovecs
are allocated immediately then nothing changes compared to the previous implementation.
If iobuf does not have enough buffers then there are two flows now:
- if
req_get_buffers_doneis not set in thespdk_nvmf_transport_opsthen again, nothing
changes. All (if there were any) ioves are released and caller must try again later. - if callback was set then caller will be notified once all iovecs are allocated.
As requests waiting for the buffer might get aborted, another API to remove such request from
the iobuf queue is also added.
Added public API spdk_nvmf_subsystem_set_cntlid_range() to set controller ID range for a
subsystem.
Added nvmf_subsystem_set_keys RPC to change DH-HMAC-CHAP keys for a given subsystem/host pair
without having to remove and readd a host.
Added spdk_nvmf_subsystem_set_ns_ana_group() function to change ANA group ID of an active
namespace of a subsystem.
scheduler
Added framework_get_governor RPC to retrieve the power governor name,
power env and the frequencies available, frequency set to the cpu cores.
sock
New functions that allows to register interrupt for given socket group:
spdk_sock_group_register_interrupt() and spdk_sock_group_unregister_interrupt(). Both uses API
exposed by the thread.h, see below for details. Support implemented only for the POSIX and SSL
sockets.
thread
New function spdk_interrupt_register_for_events() build on top of spdk_fd_group_add_for_events().
See below for details.
util
New function spdk_fd_group_add_for_events() was added alongside the existing spdk_fd_group_add().
Difference is that new API allows for specifying a set of events to be monitored instead of default
SPDK_INTERRUPT_EVENT_IN.
Added API to calculate md5 hash.