From: Stefan Hajnoczi <stefanha@redhat.com>
To: Klaus Jensen <its@irrelevant.dk>
Cc: "Alexander Mikhalitsyn" <alexander@mihalicyn.com>,
qemu-devel@nongnu.org, "Peter Xu" <peterx@redhat.com>,
"Fabiano Rosas" <farosas@suse.de>,
"Jesper Devantier" <foss@defmacro.it>,
"Stéphane Graber" <stgraber@stgraber.org>,
qemu-block@nongnu.org, "Hanna Reitz" <hreitz@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Keith Busch" <kbusch@kernel.org>, "Fam Zheng" <fam@euphon.net>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Zhao Liu" <zhao1.liu@intel.com>, "Kevin Wolf" <kwolf@redhat.com>,
"Alexander Mikhalitsyn" <aleksandr.mikhalitsyn@futurfusion.io>
Subject: Re: [PATCH v5 5/8] hw/nvme: add migration blockers for non-supported cases
Date: Wed, 8 Apr 2026 07:47:31 -0400 [thread overview]
Message-ID: <20260408114731.GA289215@fedora> (raw)
In-Reply-To: <adX2hv2WOpt9ZFzJ@AALNPWKJENSEN.aal.scsc.local>
[-- Attachment #1: Type: text/plain, Size: 3015 bytes --]
On Wed, Apr 08, 2026 at 08:32:38AM +0200, Klaus Jensen wrote:
> On Apr 7 20:39, Alexander Mikhalitsyn wrote:
> > Am Di., 7. Apr. 2026 um 17:34 Uhr schrieb Stefan Hajnoczi <stefanha@redhat.com>:
> > >
> > > On Tue, Mar 17, 2026 at 11:27:05AM +0100, Alexander Mikhalitsyn wrote:
> > > > +static bool nvme_set_migration_blockers(NvmeCtrl *n, PCIDevice *pci_dev, Error **errp)
> > > > +{
> > > > + uint64_t unsupported_cap, cap = ldq_le_p(&n->bar.cap);
> > > > + char blocker_features[BLOCKER_FEATURES_MAX_LEN] = "";
> > > > + bool adm_cmd_security_checked = false;
> > > > + bool cmd_io_mgmt_checked = false;
> > > > + bool cmd_zone_checked = false;
> > > > +
> > > > + /*
> > > > + * Idea of this function is simple, we iterate over all Command Sets and
> > > > + * for each supported command we provide a special handling logic to
> > > > + * determine if we should block migration or not.
> > > > + *
> > > > + * For instance, we have NVME_ADM_CMD_NS_ATTACHMENT and it is always
> > > > + * available to the guest, but if there is only 1 namespace, then it is
> > > > + * safe to allow migration, but if there are more, then we need to block
> > > > + * migration because we don't handle this in migration code yet.
> > >
> >
> > Hi Stefan,
> >
> > first of all thank you for looking into my patchset.
> >
> > > What would be required to migrate multiple namespaces?
> >
> > It should not be very complex, and starting from v4 I've added
> > VMStateDescription for nvme_ns, but I'm trying
> > to be extremely careful here, and keep patchset as small as possible
> > (and easy to review), because I it is my first
> > contribution to QEMU and I'm newbie with NVMe protocol. I wanted to
> > avoid any non-absolutely-required features
> > on the first approach and then add all extras after and on-demand.
> >
> > My current understanding is that to support multiple namespaces we need:
> > - VMStateDescription for nvme_ns [ done ]
> > - add logic to handle (NvmeCtrl)->namespaces field and save info about
> > attached namespaces
> > to some temporary field (use VMSTATE_WITH_TMP?)
> > - on restore we should iterate over namespaces attached and call
> > nvme_attach_ns(n, .)
> >
> > Feels like this is it, but I can miss something. Please, let me know
> > if you believe that implementing this is absolutely
> > required and I'll look closer and add this in v6.
> >
>
> I do not think multi-ns support is a hard requirement. Multi namespace
> support is among the features that are mainly used for driver/host
> test and verification purposes.
Adding it incrementally is fine as long as it can be done in a
compatible way. Most of the time that is possible, although adding
something in a compatible way can be more complicated than implementing
it from the start.
In this case it sounds like the extra state can be added as a subsection
and it won't be too complicated.
Thanks,
Stefan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2026-04-08 19:21 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-17 10:27 [PATCH v5 0/8] hw/nvme: add basic live migration support Alexander Mikhalitsyn
2026-03-17 10:27 ` [PATCH v5 1/8] migration/vmstate: export vmstate_{load, save}_field helpers Alexander Mikhalitsyn
2026-03-17 10:27 ` [PATCH v5 2/8] migration: add VMSTATE_VARRAY_OF_POINTER_TO_STRUCT_UINT{8, 32}_ALLOC Alexander Mikhalitsyn
2026-03-17 21:39 ` Peter Xu
2026-03-17 23:30 ` Peter Xu
2026-03-18 10:06 ` Alexander Mikhalitsyn
2026-03-18 10:05 ` Alexander Mikhalitsyn
2026-03-17 10:27 ` [PATCH v5 3/8] tests/unit/test-vmstate: add tests for VMS_ARRAY_OF_POINTER_ALLOW_NULL Alexander Mikhalitsyn
2026-03-17 10:27 ` [PATCH v5 4/8] tests/functional/migration: add VM launch/configure hooks Alexander Mikhalitsyn
2026-03-17 10:27 ` [PATCH v5 5/8] hw/nvme: add migration blockers for non-supported cases Alexander Mikhalitsyn
2026-04-07 15:34 ` Stefan Hajnoczi
2026-04-07 18:39 ` Alexander Mikhalitsyn
2026-04-08 6:32 ` Klaus Jensen
2026-04-08 11:47 ` Stefan Hajnoczi [this message]
2026-04-08 11:50 ` Alexander Mikhalitsyn
2026-03-17 10:27 ` [PATCH v5 6/8] hw/nvme: split nvme_init_sq/nvme_init_cq into helpers Alexander Mikhalitsyn
2026-03-17 10:27 ` [PATCH v5 7/8] hw/nvme: add basic live migration support Alexander Mikhalitsyn
2026-04-07 15:48 ` Stefan Hajnoczi
2026-04-07 19:02 ` Alexander Mikhalitsyn
2026-04-08 6:41 ` Klaus Jensen
2026-04-08 11:31 ` Alexander Mikhalitsyn
2026-04-08 18:35 ` Stefan Hajnoczi
2026-04-08 19:59 ` Alexander Mikhalitsyn
2026-04-08 18:27 ` Stefan Hajnoczi
2026-04-08 19:55 ` Alexander Mikhalitsyn
2026-04-09 13:36 ` Stefan Hajnoczi
2026-03-17 10:27 ` [PATCH v5 8/8] tests/functional/x86_64: add migration test for NVMe device Alexander Mikhalitsyn
2026-03-30 11:38 ` [PATCH v5 0/8] hw/nvme: add basic live migration support Alexander Mikhalitsyn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260408114731.GA289215@fedora \
--to=stefanha@redhat.com \
--cc=aleksandr.mikhalitsyn@futurfusion.io \
--cc=alexander@mihalicyn.com \
--cc=fam@euphon.net \
--cc=farosas@suse.de \
--cc=foss@defmacro.it \
--cc=hreitz@redhat.com \
--cc=its@irrelevant.dk \
--cc=kbusch@kernel.org \
--cc=kwolf@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stgraber@stgraber.org \
--cc=zhao1.liu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.