hw/nvme: do not auto-generate eui64

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`.

Cc: libvir-list@redhat.com
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
This commit is contained in:
Klaus Jensen 2022-04-29 10:33:33 +02:00
parent a859eb9f8f
commit 36d83272d5
3 changed files with 9 additions and 1 deletions

View file

@ -296,6 +296,13 @@ contains native support for this feature and thus use of the option
ROM approach is obsolete. The native SeaBIOS support can be activated ROM approach is obsolete. The native SeaBIOS support can be activated
by using ``-machine graphics=off``. 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 Block device options
'''''''''''''''''''' ''''''''''''''''''''

View file

@ -43,6 +43,7 @@
GlobalProperty hw_compat_7_0[] = { GlobalProperty hw_compat_7_0[] = {
{ "arm-gicv3-common", "force-8-bit-prio", "on" }, { "arm-gicv3-common", "force-8-bit-prio", "on" },
{ "nvme-ns", "eui64-default", "on"},
}; };
const size_t hw_compat_7_0_len = G_N_ELEMENTS(hw_compat_7_0); const size_t hw_compat_7_0_len = G_N_ELEMENTS(hw_compat_7_0);

View file

@ -641,7 +641,7 @@ static Property nvme_ns_props[] = {
DEFINE_PROP_SIZE("zoned.zrwas", NvmeNamespace, params.zrwas, 0), DEFINE_PROP_SIZE("zoned.zrwas", NvmeNamespace, params.zrwas, 0),
DEFINE_PROP_SIZE("zoned.zrwafg", NvmeNamespace, params.zrwafg, -1), DEFINE_PROP_SIZE("zoned.zrwafg", NvmeNamespace, params.zrwafg, -1),
DEFINE_PROP_BOOL("eui64-default", NvmeNamespace, params.eui64_default, DEFINE_PROP_BOOL("eui64-default", NvmeNamespace, params.eui64_default,
true), false),
DEFINE_PROP_END_OF_LIST(), DEFINE_PROP_END_OF_LIST(),
}; };