github spdk/spdk v21.01
SPDK v21.01: Dynamic scheduler, vfio-user, ZNS Zone Append

latest releases: v24.09-pre, v24.05-rc1, v24.01...
3 years ago

bdev

An opts_size element was added in the spdk_bdev_opts structure to solve the
ABI compatibility issue between different SPDK version. And also add opts_size
parameter in spdk_bdev_get_opts function. Two fields small_buf_pool_size and
large_buf_pool_size were added into spdk_bdev_opts, which were used to determine
the small and large buffer pool size of the whole bdev module.

A new API spdk_bdev_wait_for_examine was added to allow for checking state of
examine process. Along with corresponding bdev_wait_for_examine RPC, which
is now always called during spdk_bdev_subsystem_config_json making sure
every bdev is ready to be used.

A new API spdk_bdev_io_get_aio_status was added for getting the status of
bdev_io as Linux AIO errno. Also spdk_bdev_io_complete_aio_status function
and SPDK_BDEV_IO_STATUS_AIO_ERROR were added for bdev module to complete
a bdev_io with Linux AIO errno.

A new API spdk_bdev_get_module_name was added for getting block device module name.
Also spdk_bdev_get_module_ctx was added to obtain a bdev module context for
the block device opened by the specified descriptor.

Added max_segment_size and max_num_segments to spdk_bdev structure for
bdev modules to specify splitting requirements.

blob

An opts_size element was added in the spdk_bs_opts structure to solve the
ABI compatibility issue between different SPDK version. And also add opts_size
parameter in spdk_bs_opts_init function.

An opts_size element was added in the spdk_blob_opts structure to solve the
ABI compatibility issue between different SPDK version. And also add opts_size
parameter in spdk_blob_opts_init function.

An opts_size element was added in the spdk_blob_open_opts structure to solve the
ABI compatibility issue between different SPDK version. And also add opts_size
parameter in spdk_blob_open_opts_init function.

build

SPDK now generates pkg-config files to simplify the process of determining which
libraries must be linked into an SPDK application.

dpdk

Updated DPDK submodule to DPDK 20.11.

Removed --with-igb-uio-driver configure option. Since DPDK 20.11 igb_uio driver
was moved to separate dpdk-kmods repository. If required, users need to refer to
dpdk-kmods repository to build the driver.

env

The pci_whitelist, pci_blacklist and master_core members of struct spdk_env_opts
have been deprecated. The new members are named pci_allowed, pci_blocked and
main_core respectively.

An opts_size element was added in the spdk_app_opts structure
to solve the ABI compatibility issue between different SPDK version. An opts_size
parameter is added into spdk_app_opts_init function.

event

The pci_whitelist and pci_blacklist members of struct spdk_app_opts have been
deprecated. The new members are named pci_allowed and pci_blocked respectively.

The --pci-blacklist command line option has been deprecated, replaced with
--pci-blocked.

The --pci-whitelist/-W command line options have been deprecated, replaced with
--pci-allowed/-A.

Added new experimental dynamic scheduler that rebalances idle threads, adjusts CPU frequency
using dpdk_governor and turns idle reactor cores to interrupt mode. Please see
scheduler documentation for details.

ioat

The PCI BDF whitelist option has been removed from the ioat_scan_accel_engine RPC.
IOAT PCI functions can still be allowed or denied using SPDK application command
line options.

isa-l

Updated ISA-L submodule to v2.30.0.

json

A new API spdk_jsonrpc_send_bool_response was added to allow sending response for
writing json bool results into one function.
Update API bdev_nvme_set_options and add a keep_alive_timeout_ms parameter. Now you
can specify the keep_alive_timeout before creating NVMe bdev.

nbd

Change the return type of function spdk_nbd_stop from void to int. And update the
spdk_nbd_fini with two parameters to make its behavior from sync to async.

nvme

Directives support was added to the NVMe driver.

Two async APIs spdk_nvme_ctrlr_cmd_directive_receive and spdk_nvme_ctrlr_cmd_directive_send
are added for Directive Send and Directive Receive command, respectively.

Added a new function spdk_nvme_ctrlr_reset_subsystem to perform a NVMe
subsystem reset. Note: The NVMe-oF target does not support the subsystem reset yet.

Add a new function spdk_nvme_bytes_to_numd to transfer bytes to number of
dwords.

Added a new custom transport SPDK_NVME_TRANSPORT_VFIOUSER to enable NVMe
driver running with NVMe over vfio-user target.

Added the vfio-user custom transport implementation in NVMe driver which can connect
to NVMe over vfio-user target via vfio-user transport.

Added a new function spdk_nvme_ctrlr_set_remove_cb to remove or override
remove_cb and remove_ctx specified when the controller was probed.

Added support for ZNS zone append command with new API spdk_nvme_zns_zone_append and
spdk_nvme_zns_zone_append_with_md.

nvmf

nvmf_fc_lld_fini now takes callback and hence updating FC Broadcom LLD driver
to the latest is required.

FC transport supported primary tagging and VMID.

Broadcom FC LLD driver and SPDK NVMe-oF FC transport consolidated one LLD API,
nvmf_fc_init_poller_queues into another LLD API nvmf_fc_init_q.
Hence updating Broadcom FC LLD driver to the latest is required.

The functions destroy and qpair_fini in the transport interface now accept a
cb_fn and cb_arg to call upon completion, and their execution can be asynchronous.

The SPDK NVMe-oF target now supports async event notification for discovery log changes.
This allows the initiator to create persistent connection to discovery controller and
be notified of any discovery log changes.

An opts_size element was added in the spdk_nvmf_transport_opts structure
to solve the ABI compatiblity issue between different SPDK version. And also add
opts_size parameter in spdk_nvmf_transport_opts_init function.

Added a new custom vfio-user transport implementation in NVMe-oF which can provide
emulated NVMe devices to QEMU and SPDK NVMe driver.

Added new API spdk_nvmf_tgt_listen_ext that uses spdk_nvmf_listen_opts to allow
passing generic options to specific transport. This functionality replaces one provided
with nvmf_subsystem_set_options. Also removed nvmf_subsystem_set_options RPC
that allowed transport specific options within subsystem.

The trsvcid in nvmf_subsystem_add_listener RPC is now optional.

Pausing a subsystem now only pauses all admin queues. This allows for the
management of hosts and listeners, plus the addition of namespaces without a
full subsystem pause. Additionally, the target now allows for pausing
individual namespaces within a subsystem. To remove a namespace from a
subsystem, only the specific namespace must be paused. I/O will continue to
other namespaces while these operations execute.

rpc

An new optional parameter wait was added to the RPC iscsi_create_portal_group,
and an new RPC iscsi_start_portal_group was added. They will be used not to start
listening on portals for a portal group until all associated target nodes are created
at startup, otherwise some iSCSI initiators may fail to re-login when SPDK iSCSI
target application restarts.

Two optional parameter --small-buf-pool-size and --large-buf-pool-size were added
into bdev_set_options function.

vhost

Added optional packed_ring_recovery parameter to vhost_create_blk_controller RPC
enabling packed ring live recovery.

Don't miss a new spdk release

NewReleases is sending notifications on new releases.