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. What would be required to migrate multiple namespaces? Thanks, Stefan