> -----Original Message----- > From: Klaus Jensen <i...@irrelevant.dk> > Sent: Monday, October 19, 2020 7:43 AM > To: Dmitry Fomichev <dmitry.fomic...@wdc.com> > Cc: Keith Busch <kbu...@kernel.org>; Klaus Jensen > <k.jen...@samsung.com>; Kevin Wolf <kw...@redhat.com>; Philippe > Mathieu-Daudé <phi...@redhat.com>; Maxim Levitsky > <mlevi...@redhat.com>; Fam Zheng <f...@euphon.net>; Niklas Cassel > <niklas.cas...@wdc.com>; Damien Le Moal <damien.lem...@wdc.com>; > qemu-bl...@nongnu.org; qemu-devel@nongnu.org; Alistair Francis > <alistair.fran...@wdc.com>; Matias Bjorling <matias.bjorl...@wdc.com> > Subject: Re: [PATCH v7 08/11] hw/block/nvme: Add injection of Offline/Read- > Only zones > > On Oct 19 11:17, Dmitry Fomichev wrote: > > ZNS specification defines two zone conditions for the zones that no > > longer can function properly, possibly because of flash wear or other > > internal fault. It is useful to be able to "inject" a small number of > > such zones for testing purposes. > > > > This commit defines two optional device properties, "offline_zones" > > and "rdonly_zones". Users can assign non-zero values to these variables > > to specify the number of zones to be initialized as Offline or > > Read-Only. The actual number of injected zones may be smaller than the > > requested amount - Read-Only and Offline counts are expected to be much > > smaller than the total number of zones on a drive. > > > > Signed-off-by: Dmitry Fomichev <dmitry.fomic...@wdc.com> > > --- > > hw/block/nvme-ns.c | 64 > ++++++++++++++++++++++++++++++++++++++++++++++ > > hw/block/nvme-ns.h | 2 ++ > > 2 files changed, 66 insertions(+) > > > > diff --git a/hw/block/nvme-ns.c b/hw/block/nvme-ns.c > > index 255ded2b43..d050f97909 100644 > > --- a/hw/block/nvme-ns.c > > +++ b/hw/block/nvme-ns.c > > @@ -21,6 +21,7 @@ > > #include "sysemu/sysemu.h" > > #include "sysemu/block-backend.h" > > #include "qapi/error.h" > > +#include "crypto/random.h" > > > > #include "hw/qdev-properties.h" > > #include "hw/qdev-core.h" > > @@ -132,6 +133,32 @@ static int > nvme_calc_zone_geometry(NvmeNamespace *ns, Error **errp) > > return -1; > > } > > > > + if (ns->params.zd_extension_size) { > > + if (ns->params.zd_extension_size & 0x3f) { > > + error_setg(errp, > > + "zone descriptor extension size must be a multiple of > > 64B"); > > + return -1; > > + } > > + if ((ns->params.zd_extension_size >> 6) > 0xff) { > > + error_setg(errp, "zone descriptor extension size is too > > large"); > > + return -1; > > + } > > + } > > Looks like this should have been added in the previous patch.
Right, this belongs to ZDE patch.