Message ID | 20220429083336.2201286-3-its@irrelevant.dk |
---|---|
State | New |
Headers | show |
Series | hw/nvme: fix namespace identifiers | expand |
On Fri, Apr 29, 2022 at 10:33:33AM +0200, Klaus Jensen wrote: > From: Klaus Jensen <k.jensen@samsung.com> > > We cannot provide auto-generated unique or persistent namespace > identifiers (EUI64, NGUID, UUID) easily. Since 6.1, namespaces have been > assigned a generated EUI64 of the form "52:54:00:<namespace counter>". > This is will be unique within a QEMU instance, but not globally. > > Revert that this is assigned automatically and immediately deprecate the > compatibility parameter. Users can opt-in to this with the > `eui64-default=on` device parameter or set it explicitly with > `eui64=UINT64`. Looks good: Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index 896e5a97abbd..c65faa5ab4ad 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -356,6 +356,13 @@ contains native support for this feature and thus use of the option ROM approach is obsolete. The native SeaBIOS support can be activated by using ``-machine graphics=off``. +``-device nvme-ns,eui64-default=on|off`` (since 7.1) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In QEMU versions 6.1, 6.2 and 7.0, the ``nvme-ns`` generates an EUI-64 +identifer that is not globally unique. If an EUI-64 identifer is required, the +user must set it explicitly using the ``nvme-ns`` device parameter ``eui64``. + Block device options '''''''''''''''''''' diff --git a/hw/core/machine.c b/hw/core/machine.c index cb9bbc844d24..1e2108d95f11 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -37,7 +37,9 @@ #include "hw/virtio/virtio.h" #include "hw/virtio/virtio-pci.h" -GlobalProperty hw_compat_7_0[] = {}; +GlobalProperty hw_compat_7_0[] = { + { "nvme-ns", "eui64-default", "on"}, +}; const size_t hw_compat_7_0_len = G_N_ELEMENTS(hw_compat_7_0); GlobalProperty hw_compat_6_2[] = { diff --git a/hw/nvme/ns.c b/hw/nvme/ns.c index af6504fad2d8..06a04131f192 100644 --- a/hw/nvme/ns.c +++ b/hw/nvme/ns.c @@ -641,7 +641,7 @@ static Property nvme_ns_props[] = { DEFINE_PROP_SIZE("zoned.zrwas", NvmeNamespace, params.zrwas, 0), DEFINE_PROP_SIZE("zoned.zrwafg", NvmeNamespace, params.zrwafg, -1), DEFINE_PROP_BOOL("eui64-default", NvmeNamespace, params.eui64_default, - true), + false), DEFINE_PROP_END_OF_LIST(), };