[libvirt] [PATCH v1 11/31] conf: Format and parse NVMe type disk

Peter Krempa pkrempa at redhat.com
Thu Jul 11 16:16:58 UTC 2019


On Thu, Jul 11, 2019 at 18:12:16 +0200, Michal Privoznik wrote:
> On 7/11/19 6:05 PM, Peter Krempa wrote:
> > On Thu, Jul 11, 2019 at 17:53:58 +0200, Michal Privoznik wrote:
> > > To simplify implementation, some restrictions are added. For
> > > instance, an NVMe disk can't go to any bus but virtio and has to
> > > be type of 'disk' and can't have startupPolicy set.
> > > 
> > > Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> > > ---
> > >   src/conf/domain_conf.c                 | 129 +++++++++++++++++++++++++
> > >   src/libvirt_private.syms               |   1 +
> > >   src/qemu/qemu_block.c                  |   1 +
> > >   src/qemu/qemu_command.c                |   1 +
> > >   src/qemu/qemu_driver.c                 |   4 +
> > >   src/qemu/qemu_migration.c              |   1 +
> > >   src/util/virstoragefile.c              |  59 +++++++++++
> > >   src/util/virstoragefile.h              |  15 +++
> > >   src/xenconfig/xen_xl.c                 |   1 +
> > >   tests/qemuxml2argvdata/disk-nvme.xml   |  12 ++-
> > >   tests/qemuxml2xmloutdata/disk-nvme.xml |   1 +
> > >   tests/qemuxml2xmltest.c                |   1 +
> > >   12 files changed, 224 insertions(+), 2 deletions(-)
> > >   create mode 120000 tests/qemuxml2xmloutdata/disk-nvme.xml
> > > 
> > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> > > index 3323c9a5b1..73f5e1fa0f 100644
> > > --- a/src/conf/domain_conf.c
> > > +++ b/src/conf/domain_conf.c
> > > @@ -5088,6 +5088,11 @@ virDomainDiskDefPostParse(virDomainDiskDefPtr disk,
> > >           return -1;
> > >       }
> > > +    if (disk->src->type == VIR_STORAGE_TYPE_NVME) {
> > > +        if (disk->src->nvme->managed == VIR_TRISTATE_BOOL_ABSENT)
> > > +            disk->src->nvme->managed = VIR_TRISTATE_BOOL_YES;
> > > +    }
> > > +
> > >       if (disk->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE &&
> > >           virDomainDiskDefAssignAddress(xmlopt, disk, def) < 0) {
> > >           return -1;
> > > @@ -5938,6 +5943,38 @@ virDomainDiskDefValidate(const virDomainDiskDef *disk)
> > >           return -1;
> > >       }
> > > +    if (disk->src->type == VIR_STORAGE_TYPE_NVME) {
> > 
> > Note that this can potentially happen in the backing chain as well, so
> > this should be checked throughout the whole backing chain.
> 
> Is that so? I mean, other checks done in this funtion check only 'top level'
> disk->src too.

Yes it certainly will be possible with blockdev. Also you have such a
file in the backing chain which gets detected from the file metadata on
the disk, so such a check will probably need to be duplicated also when
starting the VM (the validate callback function may be better match).

> 
> > 
> > Also this seems all to belong to the qemu specific post parse callback.
> 
> Possibly. But since other drivers would still use virNVMeDevice module I'm
> adding later in this series, and since the module is build on these
> assumptions I figured the best place to check for them is in driver agnostic
> callback.

Fair enough.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20190711/704e82ab/attachment-0001.sig>


More information about the libvir-list mailing list