[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [PATCH v3 14/15] hw/block/nvme: Use zone metadata file for persisten
From: |
Dmitry Fomichev |
Subject: |
RE: [PATCH v3 14/15] hw/block/nvme: Use zone metadata file for persistence |
Date: |
Tue, 15 Sep 2020 20:44:22 +0000 |
> -----Original Message-----
> From: Klaus Jensen <its@irrelevant.dk>
> Sent: Tuesday, September 15, 2020 3:10 PM
> To: Dmitry Fomichev <Dmitry.Fomichev@wdc.com>
> Cc: Keith Busch <kbusch@kernel.org>; Klaus Jensen
> <k.jensen@samsung.com>; Kevin Wolf <kwolf@redhat.com>; Philippe
> Mathieu-Daudé <philmd@redhat.com>; Maxim Levitsky
> <mlevitsk@redhat.com>; Fam Zheng <fam@euphon.net>; Niklas Cassel
> <Niklas.Cassel@wdc.com>; Damien Le Moal <Damien.LeMoal@wdc.com>;
> qemu-block@nongnu.org; qemu-devel@nongnu.org; Alistair Francis
> <Alistair.Francis@wdc.com>; Matias Bjorling <Matias.Bjorling@wdc.com>
> Subject: Re: [PATCH v3 14/15] hw/block/nvme: Use zone metadata file for
> persistence
>
> On Sep 14 07:14, Dmitry Fomichev wrote:
> > A ZNS drive that is emulated by this module is currently initialized
> > with all zones Empty upon startup. However, actual ZNS SSDs save the
> > state and condition of all zones in their internal NVRAM in the event
> > of power loss. When such a drive is powered up again, it closes or
> > finishes all zones that were open at the moment of shutdown. Besides
> > that, the write pointer position as well as the state and condition
> > of all zones is preserved across power-downs.
> >
> > This commit adds the capability to have a persistent zone metadata
> > to the device. The new optional module property, "zone_file",
> > is introduced. If added to the command line, this property specifies
> > the name of the file that stores the zone metadata. If "zone_file" is
> > omitted, the device will be initialized with all zones empty, the same
> > as before.
> >
> > If zone metadata is configured to be persistent, then zone descriptor
> > extensions also persist across controller shutdowns.
> >
> > Signed-off-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
>
> This doesn't build on mingw.
Thanks for letting me know. I'll try to look into this. Do you cross-compile
with mingw64?
>
> > ---
> > hw/block/nvme.c | 370
> +++++++++++++++++++++++++++++++++++++++++++++---
> > hw/block/nvme.h | 37 +++++
> > 2 files changed, 386 insertions(+), 21 deletions(-)
> >
> > diff --git a/hw/block/nvme.c b/hw/block/nvme.c
> > index b49ae83dd5..41f4c0dacd 100644
> > --- a/hw/block/nvme.c
> > +++ b/hw/block/nvme.c
> > @@ -3429,7 +3557,188 @@ static int nvme_init_zone_meta(NvmeCtrl *n,
> NvmeNamespace *ns,
> > return 0;
> > }
> >
> > -static void nvme_zoned_init_ctrl(NvmeCtrl *n, Error **errp)
> > +static int nvme_open_zone_file(NvmeCtrl *n, bool *init_meta)
> > +{
> > + struct stat statbuf;
> > + size_t fsize;
> > + int ret;
> > +
> > + ret = stat(n->params.zone_file, &statbuf);
> > + if (ret && errno == ENOENT) {
> > + *init_meta = true;
> > + } else if (!S_ISREG(statbuf.st_mode)) {
> > + fprintf(stderr, "%s is not a regular file\n", strerror(errno));
> > + return -1;
> > + }
> > +
> > + n->zone_file_fd = open(n->params.zone_file,
> > + O_RDWR | O_LARGEFILE | O_BINARY | O_CREAT, 644);
>
> mode is wrong - I think you meant for it to be octal.
Nice catch, needs to be 0644...
- [PATCH v3 08/15] hw/block/nvme: Make Zoned NS Command Set definitions, (continued)
- [PATCH v3 08/15] hw/block/nvme: Make Zoned NS Command Set definitions, Dmitry Fomichev, 2020/09/13
- [PATCH v3 09/15] hw/block/nvme: Define Zoned NS Command Set trace events, Dmitry Fomichev, 2020/09/13
- [PATCH v3 10/15] hw/block/nvme: Support Zoned Namespace Command Set, Dmitry Fomichev, 2020/09/13
- [PATCH v3 11/15] hw/block/nvme: Introduce max active and open zone limits, Dmitry Fomichev, 2020/09/13
- [PATCH v3 12/15] hw/block/nvme: Support Zone Descriptor Extensions, Dmitry Fomichev, 2020/09/13
- [PATCH v3 13/15] hw/block/nvme: Add injection of Offline/Read-Only zones, Dmitry Fomichev, 2020/09/13
- [PATCH v3 14/15] hw/block/nvme: Use zone metadata file for persistence, Dmitry Fomichev, 2020/09/13
- [PATCH v3 15/15] hw/block/nvme: Document zoned parameters in usage text, Dmitry Fomichev, 2020/09/13