diff --git a/CHANGELOG.md b/CHANGELOG.md index ab7a206d4..7c07d0911 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ ## v21.10: (Upcoming Release) +### nvmf + +Added `oncs` to `struct spdk_nvmf_ctrlr_data` so that the transport layer +can decide support RESERVATION feature or not. + ### bdev New API `spdk_bdev_get_memory_domains` has been added, it allows to get SPDK memory domains used by bdev. diff --git a/include/spdk/nvmf_transport.h b/include/spdk/nvmf_transport.h index cd63cd6fa..8e6c62a62 100644 --- a/include/spdk/nvmf_transport.h +++ b/include/spdk/nvmf_transport.h @@ -200,6 +200,7 @@ struct spdk_nvmf_listener { */ struct spdk_nvmf_ctrlr_data { uint16_t kas; + struct spdk_nvme_cdata_oncs oncs; struct spdk_nvme_cdata_sgls sgls; struct spdk_nvme_cdata_nvmf_specific nvmf_specific; }; diff --git a/lib/nvmf/Makefile b/lib/nvmf/Makefile index 22cab3985..4819dee36 100644 --- a/lib/nvmf/Makefile +++ b/lib/nvmf/Makefile @@ -34,7 +34,7 @@ SPDK_ROOT_DIR := $(abspath $(CURDIR)/../..) include $(SPDK_ROOT_DIR)/mk/spdk.common.mk -SO_VER := 9 +SO_VER := 10 SO_MINOR := 0 C_SRCS = ctrlr.c ctrlr_discovery.c ctrlr_bdev.c \ diff --git a/lib/nvmf/ctrlr.c b/lib/nvmf/ctrlr.c index d99fc8fa6..a73fc6e81 100644 --- a/lib/nvmf/ctrlr.c +++ b/lib/nvmf/ctrlr.c @@ -299,6 +299,7 @@ nvmf_ctrlr_cdata_init(struct spdk_nvmf_transport *transport, struct spdk_nvmf_su struct spdk_nvmf_ctrlr_data *cdata) { cdata->kas = KAS_DEFAULT_VALUE; + cdata->oncs.reservations = 1; cdata->sgls.supported = 1; cdata->sgls.keyed_sgl = 1; cdata->sgls.sgl_offset = 1; @@ -2406,7 +2407,7 @@ spdk_nvmf_ctrlr_identify_ctrlr(struct spdk_nvmf_ctrlr *ctrlr, struct spdk_nvme_c cdata->oncs.dsm = nvmf_ctrlr_dsm_supported(ctrlr); cdata->oncs.write_zeroes = nvmf_ctrlr_write_zeroes_supported(ctrlr); - cdata->oncs.reservations = 1; + cdata->oncs.reservations = ctrlr->cdata.oncs.reservations; if (subsystem->flags.ana_reporting) { cdata->anatt = ANA_TRANSITION_TIME_IN_SEC; /* ANA Change state is not used, and ANA Persistent Loss state diff --git a/lib/nvmf/vfio_user.c b/lib/nvmf/vfio_user.c index 1e7017503..cac9a69ce 100644 --- a/lib/nvmf/vfio_user.c +++ b/lib/nvmf/vfio_user.c @@ -2113,6 +2113,8 @@ nvmf_vfio_user_cdata_init(struct spdk_nvmf_transport *transport, { memset(&cdata->sgls, 0, sizeof(struct spdk_nvme_cdata_sgls)); cdata->sgls.supported = SPDK_NVME_SGLS_SUPPORTED_DWORD_ALIGNED; + /* libvfio-user can only support 1 connection for now */ + cdata->oncs.reservations = 0; } static int