Skip to content

@tomzawadzki tomzawadzki released this Jan 31, 2020 · 1 commit to v20.01.x since this release

bdev

A new function, spdk_bdev_set_timeout, has been added to set per descriptor I/O timeouts.

A new class of functions spdk_bdev_compare*, have been added to allow native bdev support
of block comparisons and compare-and-write.

A new class of bdev events, SPDK_BDEV_EVENT_MEDIA_MANAGEMENT, has been added to allow bdevs
which expose raw media to alert all I/O channels of pending media management events.

A new API was added spdk_bdev_io_get_aux_buf allowing the caller to request
an auxiliary buffer for its own private use. The API is used in the same manner that
spdk_bdev_io_get_buf is used and the length of the buffer is always the same as the
bdev_io primary buffer. 'spdk_bdev_io_put_aux_buf' frees the allocated auxiliary
buffer.

blobfs

Added boolean return value for function spdk_fs_set_cache_size to indicate its operation result.

Added blobfs_set_cache_size RPC method to set cache size for blobstore filesystem.

blobstore

Added new use_extent_table option to spdk_blob_opts for creating blobs with Extent Table descriptor.
Using this metadata format, dramatically decreases number of writes required to persist each cluster allocation
for thin provisioned blobs. Extent Table descriptor is enabled by default.
See the Blobstore Programmer's Guide for more details.

dpdk

Updated DPDK submodule to DPDK 19.11.

env_dpdk

spdk_env_dpdk_post_init now takes a boolean, legacy_mem, as an argument.

A new function, spdk_env_dpdk_dump_mem_stats, prints information about the memory consumed by DPDK to a file specified by
the user. A new utility, scripts/dpdk_mem_info.py, wraps this function and prints the output in an easy to read way.

event

The functions spdk_reactor_enable_framework_monitor_context_switch() and
spdk_reactor_framework_monitor_context_switch_enabled() have been changed to
spdk_framework_enable_context_switch_monitor() and
spdk_framework_context_switch_monitor_enabled(), respectively.

ftl

All NVMe dependencies were removed from ftl library.
From now ftl library is using bdev_zone API.
bdev_ftl becomes virtual bdev.

ctrlr and trid fields in spdk_ftl_dev_init_opts structure were replaced by
base_bdev_desc.

bdev_ftl_create RPC method trtype and traddr parameters were replaced by base_bdev
parameter.

spdk_ftl_module_init and spdk_ftl_module_fini functions were removed.

spdk_ftl_punit_range and ftl_module_init_opts structures were removed.

isa-l

Updated ISA-L submodule to commit f3993f5c0b6911 which includes implementation and
optimization for aarch64.

Enabled ISA-L on aarch64 by default in addition to x86.

nvme

delayed_pcie_doorbell parameter in spdk_nvme_io_qpair_opts was renamed to delay_cmd_submit
to allow reuse in other transports.

Added RDMA WR batching to NVMf RDMA initiator. Send and receive WRs are chained together
and posted with a single call to ibv_post_send(receive) in the next call to qpair completion
processing function. Batching is controlled by 'delay_cmd_submit' qpair option.

The NVMe-oF initiator now supports plugging out of tree NVMe-oF transports. In order
to facilitate this feature, several small API changes have been made:

The spdk_nvme_transport_id struct now contains a trstring member used to identify the transport.
A new function, spdk_nvme_transport_available_by_name, has been added.
A function table, spdk_nvme_transport_ops, and macro, SPDK_NVME_TRANSPORT_REGISTER, have been added which
enable registering out of tree transports.

A new function, spdk_nvme_ns_supports_compare, allows a user to check whether a given namespace supports the compare
operation.

A new family of functions, spdk_nvme_ns_compare*, give the user access to submitting compare commands to NVMe namespaces.

A new function, spdk_nvme_ctrlr_cmd_get_log_page_ext, gives users more granular control over the command dwords sent in
log page requests.

nvmf

Add SockPriority option in [Transport] section, this can be used for NVMe-oF target
on TCP transport to set sock priority for the incomming TCP connections.

The NVMe-oF target now supports plugging out of tree NVMe-oF transports. In order
to facilitate this feature, several small API changes have been made:

The spdk_nvme_transport_id struct now contains a trstring member used to identify the transport.
spdk_nvmf_tgt_get_transport, spdk_nvmf_transport_opts_init, and spdk_nvmf_transport_create all have been
modified to take a string.
A function table, spdk_nvmf_transport_ops, and macro, SPDK_NVMF_TRANSPORT_REGISTER, have been added which
enable registering out of tree transports.

Add spdk_nvmf_tgt_stop_listen() that can be used to stop listening for
incoming connections for specified target and trid. Listener is not stopped
implicitly upon destruction of a subsystem any more.

A custom NVMe admin command handler has been added which allows the user to use the real drive
attributes from one of the target NVMe drives when reporting drive attributes to the initiator.
This handler can be enabled via the nvmf_set_config RPC.
Note: In a future version of SPDK, this handler will be enabled by default.

The SPDK target and initiator both now include compare-and-write functionality with one caveat. If using the RDMA transport,
the target expects the initiator to send both the compare command and write command either with, or without inline data. The
SPDK initiator currently respects this requirement, but this note is included as a flag for other initiators attempting
compatibility with this version of SPDK.

rpc

A new RPC, bdev_zone_block_create, enables creating an emulated zoned bdev on top of a standard block device.

A new RPC, bdev_ocssd_create, enables creating an emulated zoned bdev on top of an Open Channel SSD.

A new RPC, blobfs_set_cache_size, enables managing blobfs cache size.

A new RPC, env_dpdk_get_mem_stats, has been added to facilitate reading DPDK related memory
consumption stats. Please see the env_dpdk section above for more details.

A new RPC, framework_get_reactors, has been added to retrieve a list of all reactors.

bdev_ftl_create now takes a base_bdev argument in lieu of trtype, traddr, and punits.

bdev_nvme_set_options now allows users to disable I/O submission batching with the -d flag

bdev_nvme_cuse_register now accepts a name parameter.

bdev_uring_create now takes arguments for bdev_name and block_size

nvmf_set_config now takes an argument to enable passthru of identify commands to base NVMe devices.
Please see the nvmf section above for more details.

scsi

spdk_scsi_lun_get_dif_ctx now takes an additional argument of type spdk_scsi_task.

sock

Added spdk_sock_writev_async for performing asynchronous writes to sockets. This call will
never return EAGAIN, instead queueing internally until the data has all been sent. This can
simplify many code flows that create pollers to continue attempting to flush writes
on sockets.

Added impl_name parameter in spdk_sock_listen and spdk_sock_connect functions. Users may now
specify the sock layer implementation they'd prefer to use. Valid implementations are currently
"vpp" and "posix" and NULL, where NULL results in the previous behavior of the functions.

thread

spdk_thread_send_msg now returns int indicating if the message was successfully
sent.

A new function spdk_thread_send_critical_msg, has been added to support sending a single message from
a context that may be interrupted, e.g. a signal handler.

Two new functions, spdk_poller_pause, and spdk_poller_resume, have been added to give greater control
of pollers to the application owner.

util

spdk_pipe, a new utility for buffering data from sockets or files for parsing
has been added. The public API is available at include/spdk/pipe.h.

bdev

Added spdk_bdev_io_get_nvme_fused_status function for translating bdev_io status to NVMe status
code for fused compare-and-write operation.

Added spdk_bdev_get_acwu function for getting block device atomic compare and write unit size.

Assets 2
You can’t perform that action at this time.