diff --git a/lib/nvmf/vfio_user.c b/lib/nvmf/vfio_user.c index 209775b9b..19e0c94d6 100644 --- a/lib/nvmf/vfio_user.c +++ b/lib/nvmf/vfio_user.c @@ -415,6 +415,7 @@ struct nvmf_vfio_user_transport_opts { bool disable_mappable_bar0; bool disable_adaptive_irq; bool disable_shadow_doorbells; + bool disable_compare; }; struct nvmf_vfio_user_transport { @@ -1116,6 +1117,11 @@ static const struct spdk_json_object_decoder vfio_user_transport_opts_decoder[] offsetof(struct nvmf_vfio_user_transport, transport_opts.disable_shadow_doorbells), spdk_json_decode_bool, true }, + { + "disable_compare", + offsetof(struct nvmf_vfio_user_transport, transport_opts.disable_compare), + spdk_json_decode_bool, true + }, }; static struct spdk_nvmf_transport * @@ -4211,9 +4217,11 @@ nvmf_vfio_user_cdata_init(struct spdk_nvmf_transport *transport, cdata->ieee[2] = 0x50; memset(&cdata->sgls, 0, sizeof(struct spdk_nvme_cdata_sgls)); cdata->sgls.supported = SPDK_NVME_SGLS_SUPPORTED_DWORD_ALIGNED; + cdata->oncs.compare = !vu_transport->transport_opts.disable_compare; /* libvfio-user can only support 1 connection for now */ cdata->oncs.reservations = 0; cdata->oacs.doorbell_buffer_config = !vu_transport->transport_opts.disable_shadow_doorbells; + cdata->fuses.compare_and_write = !vu_transport->transport_opts.disable_compare; } static int