SPDK v24.05: NVMe in-band authentication, keyring lib, blob shallow copy
accel
spdk_accel_get/set_opts()
has changed to act more like spdk_bdev's variant.
bdev
Added spdk_bdev_get_nvme_ctratt()
API to get controller attributes of bdev.
bdev_raid
Added support for interleaved metadata.
Added RAID1 I/O error handling.
Examining a bdev with RAID superblock now searches for other base bdevs that may be present.
Re-adding a removed base bdev with superblock will now begin rebuild on applicable RAID levels.
Base bdevs can now be added back if were removed while in configuring state.
RAID in configuring state will not be removed if the last base bdev is removed.
bdev_uring
Added bdev_uring_rescan
RPC to allow rescaning the size of uring bdev.
blobstore
Added new API spdk_bs_blob_shallow_copy()
to make a shallow copy from a blob to a blobstore device. Only clusters
allocated to the blob will be written on the device.
Added new APIs spdk_bs_blob_set_parent()
and spdk_bs_blob_set_external_parent()
to change the parent of an
existing lvol. With these new API a thin provisioned blob can become a clone of an existing snapshot
or of an existing external snapshot.
event
SPDK applications can now start with --wait-for-rpc
and JSON configuration provided at the same time.
Struct spdk_app_opts
was extended by json_data
and json_data_size
fields
allowing user to provide a buffer with JSON config as alternative to providing JSON config file path
(these fields are mutually exclusive).
init
Function spdk_subsystem_init_from_json_config()
is deprecated and will be removed in 24.09 release.
Please use spdk_subsystem_load_config()
instead.
iscsi
Added iscsi_get_stats
RPC method to get stat information about all active connections.
Added iscsi_enable_histogram
RPC method to enable or disable histogram for specified iSCSI target.
Added iscsi_get_histogram
RPC method to get histogram for specified iSCSI target.
keyring
Added keyring library. Its purpose is to provide secure access to cryptographic keys from other
libraries. Prior to being used, keys need to be attached to the keyring using one of the modules,
which are responsible for retrieving keying material in a secure manner. Currently, there are two
keyring modules implemented: keyring_file
(keys are stored in files on a filesystem) and
keyring_linux
(based on Linux kernel keyring). The module interface is pluggable, so users can
implement their own keyring modules.
lvol
Added bdev_lvol_start_shallow_copy
RPC to start a shallow copy of an lvol over a given bdev and
bdev_lvol_check_shallow_copy
RPC to get the status of the operation.
These RPCs use the new API spdk_lvol_shallow_copy()
.
Added bdev_lvol_set_parent
and bdev_lvol_set_parent_bdev
RPC to change the parent of an existing lvol
with the use of the new APIs spdk_lvol_set_parent()
and spdk_lvol_set_external_parent()
.
nvme
Added spdk_nvme_ctrlr_get_max_sges()
API to retrieve maximum number of SGEs per request
for the given NVMe controller.
The NVMe driver now supports in-band authentication using the DH-HMAC-CHAP protocol. To enable it,
users need to specify keys in the bdev_nvme_attach_controller
RPC. Additionally, it's possible to
limit the allowed digests and Diffie-Hellman groups via bdev_nvme_set_options
.
nvmf
Added support for namespace masking using new C APIs spdk_nvmf_ns_add_host()
and
spdk_nvmf_ns_remove_host()
and RPCs nvmf_ns_add_host
and nvmf_ns_remove_host
.
Users must pass new --no-auto-visible
parameter to nvmf_subsystem_add_ns
RPC to allow
namespace masking to be controlled by these new RPCs.
Added spdk_nvmf_subsystem_get_ana_state()
API to get current ANA state of
a particular ANA group ID.
Added support for enabling mDNS-based discovery of nvmf target for
TCP transport with the addition of nvmf_publish_mdns_prr
and
nvmf_stop_mdns_prr
RPCs.
The NVMe-oF target now supports in-band authentication using the DH-HMAC-CHAP protocol. The target
will request hosts to authenticate if they're configured to use DH-HMAC-CHAP keys. The keys can be
set in the nvmf_subsystem_add_host
RPC. Additionally, it's possible to limit the allowed digests
and Diffie-Hellman groups via nvmf_set_config
.
spdk_trace
spdk_trace
has learned how to use the most recent trace file in /dev/shm when
the user has specified neither -f
nor -s
options. This is only available on
Linux since FreeBSD does not mount have a /dev/shm mount.
thread
Changed spdk_iobuf_get/set_opts()
API to act more like spdk_bdev's variant.
trace
Merged struct spdk_trace_flags
and struct spdk_trace_histories
into
new struct spdk_trace_file
. Also renamed spdk_get_trace_histories_size()
to spdk_get_trace_file_size()
.