Re: [libvirt] [qemu RFC] qapi: add "firmware.json"
Hi, > I threw in "-kernel" because, although it also (usually?) means > "memory", I expected people would want it separate. > > Regarding memory vs. pflash, I thought that these two, combined with the > access permissions, could cover all of RAM, ROM, and read-only and > read-write pflash too. > > So, "-bios" (-> ROM) boils down to "memory", with write access denied -- > please see the SeaBIOS example near the end. Hmm, I'm wondering whenever it is useful to model things this way. It's not like you can actually configure things for -bios seabios.rom or -kernel uboot.elf. Only pflash allows to actually configure things, and there are not that many useful combinations. The code needs Read+Execute. Allowing Write could be useful in theory, to allow the guest doing firmware updates. But I think nobody actually does that, so in practice it is fixed. The varstore can have different permissions, but it's only two useful combinations. Either allow access unconditionally, or allow access in secure contect (aka smm) only. cheers, Gerd -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH V2 2/8] tests: move sexpr2xml tests to WITH_LIBXL
On 04/09/2018 08:32 AM, Daniel P. Berrangé wrote: On Fri, Apr 06, 2018 at 02:44:54PM -0600, Jim Fehlig wrote: In preparation of removing the legacy Xen driver, move the sexpr2xml tests from WITH_XEN to WITH_LIBXL. Even though the legacy driver will be removed, we'll want to maintain the ability to convert sexpr to XML. Requires fixing up the tests to account for different behavior of Xen vs libxl post parse functions. There is some test file fallout due to differences in handling of default values between xend and libxl. diff --git a/tests/sexpr2xmldata/sexpr2xml-boot-grub.xml b/tests/sexpr2xmldata/sexpr2xml-boot-grub.xml index b9a8716b2..4b9f535fc 100644 --- a/tests/sexpr2xmldata/sexpr2xml-boot-grub.xml +++ b/tests/sexpr2xmldata/sexpr2xml-boot-grub.xml @@ -15,7 +15,7 @@ destroy - + @@ -24,6 +24,5 @@ - For this I wonder if a better solution is actually to make the libxl driver fill in the memballoon device. IIUC, you can't actually turn it off, so all libxl guests will have this regardless. Yes, good point. So we should just need to add the element a post-parse callback, and check for unsupported "model" value when starting the guest I'll send a follow up along these lines. In the meantime I've pushed this series. Good riddance xend... Regards, Jim -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [PATCH] news: announce dropping of legacy Xen driver
Signed-off-by: Jim Fehlig--- Not sure if removal of a feature is a feature, but this seems better placed under "New features" than "Improvements" or "Bug fixes". docs/news.xml | 10 ++ 1 file changed, 10 insertions(+) diff --git a/docs/news.xml b/docs/news.xml index 798ab6da4..106979cc1 100644 --- a/docs/news.xml +++ b/docs/news.xml @@ -44,6 +44,16 @@ add this controller when traditional PCI devices are in use. + + + Xen: Drop the legacy xend-based driver + + + The xm/xend toolstack was deprecated in Xen 4.2 and removed + from the Xen sources in the 4.5 development cycle. The libvirt + driver based on xend is now removed from the libvirt sources. + + -- 2.16.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 2/6] tpm: Add support for external swtpm TPM emulator
On 04/06/2018 10:54 AM, Daniel P. Berrangé wrote: On Fri, Apr 06, 2018 at 10:49:23AM -0400, Stefan Berger wrote: I would feel better if we just directly killed the process - with this approach if something goes wrong with swtpm it may never respond to this request and stay running. swtpm can write a pidfile. I am only adding this later in this series. Problem is with --daemon libvirt doesn't know the pid of the swtpm anymore. The other option is to not use --daemon, and let libvirt write the pid file, but that introduces the race with socket path creation again which is not good. Sounds like we should leave this as it is? Unless swtpm was broken, there shouldn't be a reason why the we wouldn't be able to shut down swtpm by sending a command to it. The socket and its directory must not have disappeared of course. Agreed. I reworked this patch series quite a bit. Primarily in regards to the directories for where the data, socket, logfile, and pidfiles are stored. At the moment I need the following two additional SELinux rules for svirt on Fedora 23 (old). allow svirt_t virtd_t:fifo_file write; allow svirt_t virtd_t:process sigchld; Not sure where I can find the sources for the policy, but maybe there's a more recent version that already has it? Should this first patch be split? Take out the XML parser and generator ? Regards, Stefan Regards, Daniel -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [PATCH v2 1/1] storage: extend preallocation flags support for qemu-img
From: Wim ten HaveThis patch adds support to qcow2 formatted filesystem object storage by instructing qemu-img to build them with preallocation=falloc whenever the XML described storage matches its . For all other cases the filesystem stored objects are built with preallocation=metadata. Signed-off-by: Wim ten Have --- src/conf/storage_conf.c| 3 +++ src/storage/storage_util.c | 10 -- .../qcow2-nocapacity-convert-prealloc.argv | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index 5036ab9ef..2bd077237 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -1184,6 +1184,9 @@ virStorageVolDefParseXML(virStoragePoolDefPtr pool, ret->target.allocation = ret->target.capacity; } +if (ret->target.allocation < ret->target.capacity) +ret->target.sparse = true; + ret->target.path = virXPathString("string(./target/path)", ctxt); if (options->formatFromString) { char *format = virXPathString("string(./target/format/@type)", ctxt); diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index b4aed0f70..c4f311ded 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -856,6 +856,7 @@ struct _virStorageBackendQemuImgInfo { const char *compat; virBitmapPtr features; bool nocow; +bool sparse; const char *backingPath; int backingFormat; @@ -884,8 +885,12 @@ storageBackendCreateQemuImgOpts(virStorageEncryptionInfoDefPtr enc, virStorageFileFormatTypeToString(info.backingFormat)); if (info.encryption) virBufferAddLit(, "encryption=on,"); -if (info.preallocate) -virBufferAddLit(, "preallocation=metadata,"); +if (info.preallocate) { +if (info.sparse) +virBufferAddLit(, "preallocation=metadata,"); +else +virBufferAddLit(, "preallocation=falloc,"); +} } if (info.nocow) @@ -1187,6 +1192,7 @@ virStorageBackendCreateQemuImgCmdFromVol(virStoragePoolObjPtr pool, .compat = vol->target.compat, .features = vol->target.features, .nocow = vol->target.nocow, +.sparse = vol->target.sparse, .secretPath = secretPath, .secretAlias = NULL, }; diff --git a/tests/storagevolxml2argvdata/qcow2-nocapacity-convert-prealloc.argv b/tests/storagevolxml2argvdata/qcow2-nocapacity-convert-prealloc.argv index 9073b1b16..b151b9401 100644 --- a/tests/storagevolxml2argvdata/qcow2-nocapacity-convert-prealloc.argv +++ b/tests/storagevolxml2argvdata/qcow2-nocapacity-convert-prealloc.argv @@ -1,4 +1,4 @@ qemu-img convert -f raw -O qcow2 \ --o encryption=on,preallocation=metadata \ +-o encryption=on,preallocation=falloc \ /var/lib/libvirt/images/sparse.img \ /var/lib/libvirt/images/OtherDemo.img -- 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH v1 1/2] storage: extend preallocation flags support for qemu-img
On Wed, 4 Apr 2018 13:31:39 +0200 Michal Privoznikwrote: > On 04/03/2018 04:14 PM, Wim Ten Have wrote: > > From: Wim ten Have > > > > This patch adds support to qcow2 formatted filesystem object storage by > > instructing qemu-img to build them with preallocation=falloc whenever the > > XML described storage matches its . For all other > > cases the filesystem stored objects are built with preallocation=metadata. > > > > Signed-off-by: Wim ten Have ... > > VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA = 1 << 0, > > -VIR_STORAGE_VOL_CREATE_REFLINK = 1 << 1, /* perform a btrfs > > lightweight copy */ > > +VIR_STORAGE_VOL_CREATE_PREALLOC_FALLOC = 1 << 1, > > +VIR_STORAGE_VOL_CREATE_PREALLOC_FULL = 1 << 2, > > +VIR_STORAGE_VOL_CREATE_REFLINK = 1 << 3, /* perform a btrfs > > lightweight copy */ > > This is not. Imagine there's a mgmt application already written and > compiled which calls: > > virStorageVolCreateXML(flags = VIR_STORAGE_VOL_CREATE_REFLINK); > > Because it is already compiled it is effectively calling: > > virStorageVolCreateXML(flags = 1); > > and everything works. However, if this change would be merged, the mgmt > application would be still making the same call but now it would have > different semantic, because you are changing the numbering. So > effectively mgmt app would be calling > > virStorageVolCreateXML(flags = VIR_STORAGE_VOL_CREATE_PREALLOC_FALLOC) > > which is obviously wrong. We can not expect mgmt applications to be > recompiled every time there's a new release of libvirt. ... right, let me send v2. (applying and propagating XML target.sparse) > Also, storagevolxml2argvtest is failing after this change. See 'make check'. ?! ... sure I ran 'make check'. Anyways ... corrections under v2 coming forth. Rgds, - Wim. > Michal > > -- > libvir-list mailing list > libvir-list@redhat.com > https://www.redhat.com/mailman/listinfo/libvir-list -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [PATCH v2 0/1] Fix qcow2 fully allocated filesystem objects.
From: Wim ten HaveWhen tools like virt-install request to create a fully allocated filesystem object storage by setting the parameter sparse=no, libvirt doesn't allow that to happen for qcow2 formatted files. Regardless of its XML instuction request libvirt always targets its filesystem object storage with preallocation=metadata if format=qcow2 is in effect. This results in sparse files which could cause problems since total image storage potentially can overrun actual filesystem available space. Changes from v1: * Fix XML target sparse setting and apply for qcow2. * Bring the test change under same PATCH. Wim ten Have (1): storage: extend preallocation flags support for qemu-img src/conf/storage_conf.c| 3 +++ src/storage/storage_util.c | 10 -- .../qcow2-nocapacity-convert-prealloc.argv | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) -- 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [qemu RFC] qapi: add "firmware.json"
On 04/09/18 10:49, Daniel P. Berrangé wrote: > On Sat, Apr 07, 2018 at 02:01:17AM +0200, Laszlo Ersek wrote: >> Add a schema that describes the properties of virtual machine firmware. >> >> Each firmware executable installed on a host system should come with a >> JSON file that conforms to this schema, and informs the management >> applications about the firmware's properties. >> >> In addition, a configuration directory with symlinks to the JSON files >> should exist, with the symlinks carefully named to reflect a priority >> order. Management applications can then search this directory in priority >> order for the first firmware executable that satisfies their search >> criteria. The found JSON file provides the management layer with domain >> configuration bits that are required to run the firmware binary. >> >> Cc: "Daniel P. Berrange">> Cc: Alexander Graf >> Cc: Ard Biesheuvel >> Cc: David Gibson >> Cc: Eric Blake >> Cc: Gary Ching-Pang Lin >> Cc: Gerd Hoffmann >> Cc: Kashyap Chamarthy >> Cc: Markus Armbruster >> Cc: Michael Roth >> Cc: Michal Privoznik >> Cc: Peter Krempa >> Cc: Peter Maydell >> Cc: Thomas Huth >> Signed-off-by: Laszlo Ersek >> --- >> >> Notes: >> Folks on the CC list, please try to see if the suggested schema is >> flexible enough to describe the virtual firmware(s) that you are >> familiar with. Thanks! >> >> Makefile | 9 ++ >> Makefile.objs | 4 + >> qapi/firmware.json| 343 >> ++ >> qapi/qapi-schema.json | 1 + >> qmp.c | 5 + >> .gitignore| 4 + >> 6 files changed, 366 insertions(+) >> create mode 100644 qapi/firmware.json >> > >> diff --git a/qapi/firmware.json b/qapi/firmware.json >> new file mode 100644 >> index ..f267240f44dd >> --- /dev/null >> +++ b/qapi/firmware.json >> @@ -0,0 +1,343 @@ >> +# -*- Mode: Python -*- >> + >> +## >> +# = Firmware >> +## >> + >> +## >> +# @FirmwareDevice: >> +# >> +# Defines the device types that a firmware file can be mapped into. >> +# >> +# @memory: The firmware file is to be mapped into memory. >> +# >> +# @kernel: The firmware file is to be loaded like a Linux kernel. This is >> +# similar to @memory but may imply additional processing that is >> +# specific to the target architecture. >> +# >> +# @flash: The firmware file is to be mapped into a pflash chip. >> +# >> +# Since: 2.13 >> +## >> +{ 'enum' : 'FirmwareDevice', >> + 'data' : [ 'memory', 'kernel', 'flash' ] } >> + >> +## >> +# @FirmwareAccess: >> +# >> +# Defines the possible permissions for a given access mode to a device that >> +# maps a firmware file. >> +# >> +# @denied: The access is denied. >> +# >> +# @permitted: The access is permitted. >> +# >> +# @restricted-to-secure-context: The access is permitted for guest code that >> +#runs in a secure context; otherwise the >> access >> +#is denied. The definition of "secure >> context" >> +#is specific to the target architecture. >> +# >> +# Since: 2.13 >> +## >> +{ 'enum' : 'FirmwareAccess', >> + 'data' : [ 'denied', 'permitted', 'restricted-to-secure-context' ] } > > I'm not really understanding the purpose of this - what does it map to > on the command line ? That's difficult to answer generally, because -bios and -kernel have different meanings per board type. So I didn't aim at command line switches here; instead I tried to capture where and how the firmware wants to "end up" in the virtual hardware. How that maps to a particular board is a separate question. For example, OVMF can be loaded in a multitude of ways: (1) "OVMF.fd" (a unified image that contains an executable and a live variable store too) can be loaded with "-bios". This will place the full image into ROM (that is FirmwareDevice=memory, read and exec: permitted, write: denied). This will not provide a spec-compatible UEFI variable service to the guest, but many people use OVMF like this. The libvirt domain XML can accommodate this case: OVMF.fd (2) "OVMF.fd" can be loaded into a single pflash chip (single pflash drive, read/write). The command line switch is "-drive if=pflash,format=raw,file=OVMF.fd,unit=0,readonly=off". This gives the guest a spec-compliant UEFI variable service; however, the variable store is inseparable from the firmware binary, and upgrading the latter without losing the former is not possible, from a packaging perspective. This maps to FirmwareDevice=flash, with all of read/write/exec=permitted. Libvirt can describe this too in the domain XML: OVMF.fd (3)
Re: [libvirt] Race condition between qemuDomainCreate and qemuDomainDestroy
On 04/09/2018 12:12 PM, Laine Stump wrote: > On 04/06/2018 12:27 PM, John Ferlan wrote: >> >> On 04/03/2018 07:47 AM, Marc Hartmayer wrote: >>> On Tue, Mar 20, 2018 at 11:25 AM +0100, Marc Hartmayer >>>wrote: Hi, there is a race condition between 'qemuDomainCreate' and 'qemuDomainDestroy' causing a NULL pointer segmentation fault when accessing priv->monConfig. The race condition can be easily reproduced using gdb. (gdb) set non-stop on # set breakpoint on line 'mon = qemuMonitorOpen(vm, …)' (gdb) b qemu_process.c:1799 # Actually, this second breakpoint is optional but it’s good to see where priv->monConfig is set to NULL # set breakpoint on line priv->monConfig = NULL; (gdb) b qemu_process.c:6589 (gdb) run # continue all threads - just for the case we hit a breakpoint already (gdb) c -a Now start a domain (that is using QEMU) $ virsh start domain The first breakpoint will be hit. Now run in a second shell $ virsh destroy domain The second breakpoint will be hit. Continue the thread where the second breakpoint was hit (for this example this is thread 4) (gdb) thread apply 4 continue Now continue the thread where the first breakpoint was hit. => Segmentation fault because of a NULL pointer dereference at config->value Since I'm not very familiar with that part of the code, I wanted to ask for your advice. Thanks in advance. Beste Grüße / Kind regards Marc Hartmayer IBM Deutschland Research & Development GmbH Vorsitzende des Aufsichtsrats: Martina Koederitz Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294 >>> Any ideas? >>> >> Seeing as no one else has an exact or authoritative answer... >> >> qemuDomainCreate{XML|WithFlags} (and a few others) will call >> qemuProcessBeginJob which calls qemuDomainObjBeginAsyncJob and >> qemuDomainObjSetAsyncJobMask which IIUC allows QEMU_JOB_DESTROY >> to be run. >> >> The qemuDomainDestroyFlags calls qemuProcessBeginStopJob which calls >> qemuDomainObjBeginJob (e.g. sync job) using QEMU_JOB_DESTROY, which >> again IIUC is allowed to happen alongside the Async job because of the >> mask setting. >> >> In the code where you've broken during create, the @vm object lock is >> dropped allowing destroy to obtain it. So with the perfect timing and >> storm the window of opportunity does exist that the monConfig could be >> free'd and thus priv->monConfig set to NULL before or during the create >> processing uses it in qemuMonitorOpen. If during the processing, then >> obviously the config-> would "appear" to be valid, but it may not >> actually be what was passed. >> >> The fix I believe involves using objects for virDomainChrSourceDef >> rather than VIR_ALLOC'd and VIR_FREE'd memory directly. I've put >> together a few patches and will post them shortly. Using the patches I >> don't see a core, but rather the (I believe) expected "error: internal >> error: qemu unexpectedly closed the monitor" > > Isn't this just a symptom of a wider problem? Your patches fix the > problem for monConfig, but what about all the other members of the > domain object that aren't protected with the trappings of virObject? > Isn't it just as likely that they could fall prey to the same problem? > I don't think it'd be a wider problem as long as the virObjectLock is held on the object not much can happen. In this case, there was a perfect storm of sorts where that lock was dropped and we had an allowed job (DESTROY) processed. That processing messed with one pointer that was then used in a call when the lock was down. The @priv pointer used for monJSON boolean is a @vm pointer and it's only freed if the @vm was somehow removed - which it couldn't because we have a reference to it (we only unlock'd and not unref'd). So could there be more, I hope not, but I never want to say it's impossible, because someone will open that window of opportunity. Perhaps this discussion will cause some other poor souls that have had to walk through that code in the past to chime in! John -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [dbus PATCH v2 05/11] APIs should appear in alphabetical order: Move Create method
Signed-off-by: Katerina Koukiou--- data/org.libvirt.Domain.xml | 10 +- src/domain.c| 48 ++--- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index cd8ff4d..3f91354 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -35,6 +35,11 @@ https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetUUIDString"/> + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainCreateWithFlags"/> + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetVcpusFlags"/> @@ -74,11 +79,6 @@ value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainReset"/> - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainCreateWithFlags"/> - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainUndefineFlags"/> diff --git a/src/domain.c b/src/domain.c index cfbaf81..4e43a36 100644 --- a/src/domain.c +++ b/src/domain.c @@ -218,6 +218,29 @@ virtDBusDomainGetUUID(const gchar *objectPath, *value = g_variant_new("s", uuid); } +static void +virtDBusDomainCreate(GVariant *inArgs, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath, + gpointer userData, + GVariant **outArgs G_GNUC_UNUSED, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) +{ +virtDBusConnect *connect = userData; +g_autoptr(virDomain) domain = NULL; +guint flags; + +g_variant_get(inArgs, "(u)", ); + +domain = virtDBusDomainGetVirDomain(connect, objectPath, error); +if (!domain) +return; + +if (virDomainCreateWithFlags(domain, flags) < 0) +virtDBusUtilSetLastVirtError(error); +} + static void virtDBusDomainGetVcpus(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -404,29 +427,6 @@ virtDBusDomainReset(GVariant *inArgs, virtDBusUtilSetLastVirtError(error); } -static void -virtDBusDomainCreate(GVariant *inArgs, - GUnixFDList *inFDs G_GNUC_UNUSED, - const gchar *objectPath, - gpointer userData, - GVariant **outArgs G_GNUC_UNUSED, - GUnixFDList **outFDs G_GNUC_UNUSED, - GError **error) -{ -virtDBusConnect *connect = userData; -g_autoptr(virDomain) domain = NULL; -guint flags; - -g_variant_get(inArgs, "(u)", ); - -domain = virtDBusDomainGetVirDomain(connect, objectPath, error); -if (!domain) -return; - -if (virDomainCreateWithFlags(domain, flags) < 0) -virtDBusUtilSetLastVirtError(error); -} - static void virtDBusDomainUndefine(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -503,6 +503,7 @@ static virtDBusGDBusPropertyTable virtDBusDomainPropertyTable[] = { }; static virtDBusGDBusMethodTable virtDBusDomainMethodTable[] = { +{ "Create", virtDBusDomainCreate }, { "GetVcpus", virtDBusDomainGetVcpus }, { "GetXMLDesc", virtDBusDomainGetXMLDesc }, { "GetStats", virtDBusDomainGetStats }, @@ -510,7 +511,6 @@ static virtDBusGDBusMethodTable virtDBusDomainMethodTable[] = { { "Destroy", virtDBusDomainDestroy }, { "Reboot", virtDBusDomainReboot }, { "Reset", virtDBusDomainReset }, -{ "Create", virtDBusDomainCreate }, { "Undefine", virtDBusDomainUndefine }, { "Suspend", virtDBusDomainSuspend }, { "Resume", virtDBusDomainResume }, -- 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [dbus PATCH v2 04/11] APIs should appear in alphabetical order: Move UUID property
Signed-off-by: Katerina Koukiou--- data/org.libvirt.Domain.xml | 8 src/domain.c| 42 +- test/test_domain.py | 2 +- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index edf7491..cd8ff4d 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -19,10 +19,6 @@ https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetName"/> - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetUUIDString"/> - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetOSType"/> @@ -35,6 +31,10 @@ https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetState"/> + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetUUIDString"/> + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetVcpusFlags"/> diff --git a/src/domain.c b/src/domain.c index 87c205f..cfbaf81 100644 --- a/src/domain.c +++ b/src/domain.c @@ -107,26 +107,6 @@ virtDBusDomainGetName(const gchar *objectPath, *value = g_variant_new("s", name); } -static void -virtDBusDomainGetUUID(const gchar *objectPath, - gpointer userData, - GVariant **value, - GError **error) -{ -virtDBusConnect *connect = userData; -g_autoptr(virDomain) domain = NULL; -gchar uuid[VIR_UUID_STRING_BUFLEN] = ""; - -domain = virtDBusDomainGetVirDomain(connect, objectPath, error); -if (!domain) -return; - -if (virDomainGetUUIDString(domain, uuid) < 0) -return virtDBusUtilSetLastVirtError(error); - -*value = g_variant_new("s", uuid); -} - static void virtDBusDomainGetOsType(const gchar *objectPath, gpointer userData, @@ -218,6 +198,26 @@ virtDBusDomainGetState(const gchar *objectPath, *value = g_variant_new("s", string); } +static void +virtDBusDomainGetUUID(const gchar *objectPath, + gpointer userData, + GVariant **value, + GError **error) +{ +virtDBusConnect *connect = userData; +g_autoptr(virDomain) domain = NULL; +gchar uuid[VIR_UUID_STRING_BUFLEN] = ""; + +domain = virtDBusDomainGetVirDomain(connect, objectPath, error); +if (!domain) +return; + +if (virDomainGetUUIDString(domain, uuid) < 0) +return virtDBusUtilSetLastVirtError(error); + +*value = g_variant_new("s", uuid); +} + static void virtDBusDomainGetVcpus(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -495,10 +495,10 @@ static virtDBusGDBusPropertyTable virtDBusDomainPropertyTable[] = { { "Autostart", virtDBusDomainGetAutostart, NULL }, { "Id", virtDBusDomainGetId, NULL }, { "Name", virtDBusDomainGetName, NULL }, -{ "UUID", virtDBusDomainGetUUID, NULL }, { "OSType", virtDBusDomainGetOsType, NULL }, { "Persistent", virtDBusDomainGetPersistent, NULL }, { "State", virtDBusDomainGetState, NULL }, +{ "UUID", virtDBusDomainGetUUID, NULL }, { 0 } }; diff --git a/test/test_domain.py b/test/test_domain.py index c3ffebf..edcf106 100755 --- a/test/test_domain.py +++ b/test/test_domain.py @@ -14,10 +14,10 @@ class TestDomain(libvirttest.BaseTestClass): assert isinstance(props['Autostart'], dbus.Boolean) assert isinstance(props['Id'], dbus.UInt32) assert isinstance(props['Name'], dbus.String) -assert isinstance(props['UUID'], dbus.String) assert isinstance(props['OSType'], dbus.String) assert isinstance(props['Persistent'], dbus.Boolean) assert isinstance(props['State'], dbus.String) +assert isinstance(props['UUID'], dbus.String) # Call all methods except Reset and GetStats, because the test backend # doesn't support those -- 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [dbus PATCH v2 09/11] APIs should appear in alphabetical order: Move Undefine method
Signed-off-by: Katerina Koukiou--- data/org.libvirt.Domain.xml | 8 src/domain.c| 40 test/test_domain.py | 26 +- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 673260c..1be94ec 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -83,15 +83,15 @@ https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainResume"/> + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSuspend"/> + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainUndefineFlags"/> - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSuspend"/> - https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventDeviceAddedCallback"/> diff --git a/src/domain.c b/src/domain.c index a16e49f..4deef26 100644 --- a/src/domain.c +++ b/src/domain.c @@ -448,45 +448,45 @@ virtDBusDomainResume(GVariant *inArgs G_GNUC_UNUSED, } static void -virtDBusDomainUndefine(GVariant *inArgs, - GUnixFDList *inFDs G_GNUC_UNUSED, - const gchar *objectPath, - gpointer userData, - GVariant **outArgs G_GNUC_UNUSED, - GUnixFDList **outFDs G_GNUC_UNUSED, - GError **error) +virtDBusDomainSuspend(GVariant *inArgs G_GNUC_UNUSED, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath, + gpointer userData, + GVariant **outArgs G_GNUC_UNUSED, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) { virtDBusConnect *connect = userData; g_autoptr(virDomain) domain = NULL; -guint flags; - -g_variant_get(inArgs, "(u)", ); domain = virtDBusDomainGetVirDomain(connect, objectPath, error); if (!domain) return; -if (virDomainUndefineFlags(domain, flags) < 0) +if (virDomainSuspend(domain) < 0) virtDBusUtilSetLastVirtError(error); } static void -virtDBusDomainSuspend(GVariant *inArgs G_GNUC_UNUSED, - GUnixFDList *inFDs G_GNUC_UNUSED, - const gchar *objectPath, - gpointer userData, - GVariant **outArgs G_GNUC_UNUSED, - GUnixFDList **outFDs G_GNUC_UNUSED, - GError **error) +virtDBusDomainUndefine(GVariant *inArgs, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath, + gpointer userData, + GVariant **outArgs G_GNUC_UNUSED, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) { virtDBusConnect *connect = userData; g_autoptr(virDomain) domain = NULL; +guint flags; + +g_variant_get(inArgs, "(u)", ); domain = virtDBusDomainGetVirDomain(connect, objectPath, error); if (!domain) return; -if (virDomainSuspend(domain) < 0) +if (virDomainUndefineFlags(domain, flags) < 0) virtDBusUtilSetLastVirtError(error); } @@ -512,8 +512,8 @@ static virtDBusGDBusMethodTable virtDBusDomainMethodTable[] = { { "Reboot", virtDBusDomainReboot }, { "Reset", virtDBusDomainReset }, { "Resume", virtDBusDomainResume }, -{ "Undefine", virtDBusDomainUndefine }, { "Suspend", virtDBusDomainSuspend }, +{ "Undefine", virtDBusDomainUndefine }, { 0 } }; diff --git a/test/test_domain.py b/test/test_domain.py index ceda19e..952bf59 100755 --- a/test/test_domain.py +++ b/test/test_domain.py @@ -68,19 +68,6 @@ class TestDomain(libvirttest.BaseTestClass): self.main_loop() -def test_undefine(self): -def domain_undefined(path, _event): -assert isinstance(path, dbus.ObjectPath) -self.loop.quit() - -self.connect.connect_to_signal('DomainEvent', domain_undefined, arg1='Undefined') - -_, domain = self.domain() -domain.Shutdown(0) -domain.Undefine(0) - -self.main_loop() - def test_suspend(self): def domain_suspended(path, _event): assert isinstance(path, dbus.ObjectPath) @@ -96,5 +83,18 @@ class TestDomain(libvirttest.BaseTestClass): self.main_loop() +def test_undefine(self): +def domain_undefined(path, _event): +assert isinstance(path, dbus.ObjectPath) +self.loop.quit() + +self.connect.connect_to_signal('DomainEvent', domain_undefined, arg1='Undefined') + +_, domain = self.domain() +domain.Shutdown(0) +domain.Undefine(0) + +self.main_loop() + if __name__ == '__main__': libvirttest.run() --
[libvirt] [dbus PATCH v2 11/11] APIs should appear in alphabetical order: Move ListDomains method
Also test was renamed from test_list_domains to test_connect_list_domains to follow the naming convention. Signed-off-by: Katerina Koukiou--- data/org.libvirt.Connect.xml | 12 +++ src/connect.c| 82 ++-- test/test_connect.py | 24 ++--- 3 files changed, 59 insertions(+), 59 deletions(-) diff --git a/data/org.libvirt.Connect.xml b/data/org.libvirt.Connect.xml index 5b49ed9..55260cc 100644 --- a/data/org.libvirt.Connect.xml +++ b/data/org.libvirt.Connect.xml @@ -25,12 +25,6 @@ https://libvirt.org/html/libvirt-libvirt-host.html#virConnectGetVersion"/> - - https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectListAllDomains"/> - - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainCreateXML"/> @@ -73,6 +67,12 @@ + + https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectListAllDomains"/> + + + https://libvirt.org/html/libvirt-libvirt-network.html#virConnectListAllNetworks"/> diff --git a/src/connect.c b/src/connect.c index 9820de5..a8ff43c 100644 --- a/src/connect.c +++ b/src/connect.c @@ -206,46 +206,6 @@ virtDBusConnectGetCapabilities(GVariant *inArgs G_GNUC_UNUSED, *outArgs = g_variant_new("(s)", capabilities); } -static void -virtDBusConnectListDomains(GVariant *inArgs, - GUnixFDList *inFDs G_GNUC_UNUSED, - const gchar *objectPath G_GNUC_UNUSED, - gpointer userData, - GVariant **outArgs, - GUnixFDList **outFDs G_GNUC_UNUSED, - GError **error) -{ -virtDBusConnect *connect = userData; -g_autoptr(virDomainPtr) domains = NULL; -guint flags; -GVariantBuilder builder; -GVariant *gdomains; - -g_variant_get(inArgs, "(u)", ); - -if (!virtDBusConnectOpen(connect, error)) -return; - -if (virConnectListAllDomains(connect->connection, , flags) < 0) -return virtDBusUtilSetLastVirtError(error); - -if (!*domains) -return; - -g_variant_builder_init(, G_VARIANT_TYPE("ao")); - -for (gint i = 0; domains[i]; i++) { -g_autofree gchar *path = NULL; -path = virtDBusUtilBusPathForVirDomain(domains[i], - connect->domainPath); - -g_variant_builder_add(, "o", path); -} - -gdomains = g_variant_builder_end(); -*outArgs = g_variant_new_tuple(, 1); -} - static void virtDBusConnectDomainCreateXML(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -413,6 +373,46 @@ virtDBusConnectGetSysinfo(GVariant *inArgs, *outArgs = g_variant_new("(s)", sysinfo); } +static void +virtDBusConnectListDomains(GVariant *inArgs, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath G_GNUC_UNUSED, + gpointer userData, + GVariant **outArgs, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) +{ +virtDBusConnect *connect = userData; +g_autoptr(virDomainPtr) domains = NULL; +guint flags; +GVariantBuilder builder; +GVariant *gdomains; + +g_variant_get(inArgs, "(u)", ); + +if (!virtDBusConnectOpen(connect, error)) +return; + +if (virConnectListAllDomains(connect->connection, , flags) < 0) +return virtDBusUtilSetLastVirtError(error); + +if (!*domains) +return; + +g_variant_builder_init(, G_VARIANT_TYPE("ao")); + +for (gint i = 0; domains[i]; i++) { +g_autofree gchar *path = NULL; +path = virtDBusUtilBusPathForVirDomain(domains[i], + connect->domainPath); + +g_variant_builder_add(, "o", path); +} + +gdomains = g_variant_builder_end(); +*outArgs = g_variant_new_tuple(, 1); +} + static void virtDBusConnectListNetworks(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -575,7 +575,6 @@ static virtDBusGDBusPropertyTable virtDBusConnectPropertyTable[] = { }; static virtDBusGDBusMethodTable virtDBusConnectMethodTable[] = { -{ "ListDomains", virtDBusConnectListDomains }, { "DomainCreateXML", virtDBusConnectDomainCreateXML }, { "DomainDefineXML", virtDBusConnectDomainDefineXML }, { "DomainLookupByID", virtDBusConnectDomainLookupByID }, @@ -583,6 +582,7 @@ static virtDBusGDBusMethodTable virtDBusConnectMethodTable[] = { { "DomainLookupByUUID", virtDBusConnectDomainLookupByUUID }, { "GetCapabilities", virtDBusConnectGetCapabilities }, { "GetSysinfo", virtDBusConnectGetSysinfo }, +{ "ListDomains", virtDBusConnectListDomains }, { "ListNetworks", virtDBusConnectListNetworks }, {
[libvirt] [dbus PATCH v2 10/11] APIs should appear in alphabetical order: Move Shutdown method
Signed-off-by: Katerina Koukiou--- data/org.libvirt.Domain.xml | 10 +- src/domain.c| 48 ++--- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 1be94ec..78378bb 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -64,11 +64,6 @@ - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainShutdownFlags"/> - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainReboot"/> @@ -83,6 +78,11 @@ https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainResume"/> + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainShutdownFlags"/> + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSuspend"/> diff --git a/src/domain.c b/src/domain.c index 4deef26..14f07fc 100644 --- a/src/domain.c +++ b/src/domain.c @@ -356,29 +356,6 @@ virtDBusDomainGetXMLDesc(GVariant *inArgs, *outArgs = g_variant_new("(s)", xml); } -static void -virtDBusDomainShutdown(GVariant *inArgs, - GUnixFDList *inFDs G_GNUC_UNUSED, - const gchar *objectPath, - gpointer userData, - GVariant **outArgs G_GNUC_UNUSED, - GUnixFDList **outFDs G_GNUC_UNUSED, - GError **error) -{ -virtDBusConnect *connect = userData; -g_autoptr(virDomain) domain = NULL; -guint flags; - -g_variant_get(inArgs, "(u)", ); - -domain = virtDBusDomainGetVirDomain(connect, objectPath, error); -if (!domain) -return; - -if (virDomainShutdownFlags(domain, flags) < 0) -virtDBusUtilSetLastVirtError(error); -} - static void virtDBusDomainReboot(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -447,6 +424,29 @@ virtDBusDomainResume(GVariant *inArgs G_GNUC_UNUSED, virtDBusUtilSetLastVirtError(error); } +static void +virtDBusDomainShutdown(GVariant *inArgs, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath, + gpointer userData, + GVariant **outArgs G_GNUC_UNUSED, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) +{ +virtDBusConnect *connect = userData; +g_autoptr(virDomain) domain = NULL; +guint flags; + +g_variant_get(inArgs, "(u)", ); + +domain = virtDBusDomainGetVirDomain(connect, objectPath, error); +if (!domain) +return; + +if (virDomainShutdownFlags(domain, flags) < 0) +virtDBusUtilSetLastVirtError(error); +} + static void virtDBusDomainSuspend(GVariant *inArgs G_GNUC_UNUSED, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -508,10 +508,10 @@ static virtDBusGDBusMethodTable virtDBusDomainMethodTable[] = { { "GetStats", virtDBusDomainGetStats }, { "GetVcpus", virtDBusDomainGetVcpus }, { "GetXMLDesc", virtDBusDomainGetXMLDesc }, -{ "Shutdown", virtDBusDomainShutdown }, { "Reboot", virtDBusDomainReboot }, { "Reset", virtDBusDomainReset }, { "Resume", virtDBusDomainResume }, +{ "Shutdown", virtDBusDomainShutdown }, { "Suspend", virtDBusDomainSuspend }, { "Undefine", virtDBusDomainUndefine }, { 0 } -- 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [dbus PATCH v2 06/11] APIs should appear in alphabetical order: Move Destroy method
Signed-off-by: Katerina Koukiou--- data/org.libvirt.Domain.xml | 10 - src/domain.c| 49 +++-- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 3f91354..ecd3f04 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -40,6 +40,11 @@ value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainCreateWithFlags"/> + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDestroyFlags"/> + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetVcpusFlags"/> @@ -64,11 +69,6 @@ value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainShutdownFlags"/> - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDestroyFlags"/> - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainReboot"/> diff --git a/src/domain.c b/src/domain.c index 4e43a36..f797627 100644 --- a/src/domain.c +++ b/src/domain.c @@ -241,6 +241,30 @@ virtDBusDomainCreate(GVariant *inArgs, virtDBusUtilSetLastVirtError(error); } +static void +virtDBusDomainDestroy(GVariant *inArgs, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath, + gpointer userData, + GVariant **outArgs G_GNUC_UNUSED, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) +{ +virtDBusConnect *connect = userData; +g_autoptr(virDomain) domain = NULL; +guint flags; + +g_variant_get(inArgs, "(u)", ); + +domain = virtDBusDomainGetVirDomain(connect, objectPath, error); +if (!domain) +return; + +if (virDomainDestroyFlags(domain, flags) < 0) +virtDBusUtilSetLastVirtError(error); +} + + static void virtDBusDomainGetVcpus(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -356,29 +380,6 @@ virtDBusDomainShutdown(GVariant *inArgs, virtDBusUtilSetLastVirtError(error); } -static void -virtDBusDomainDestroy(GVariant *inArgs, - GUnixFDList *inFDs G_GNUC_UNUSED, - const gchar *objectPath, - gpointer userData, - GVariant **outArgs G_GNUC_UNUSED, - GUnixFDList **outFDs G_GNUC_UNUSED, - GError **error) -{ -virtDBusConnect *connect = userData; -g_autoptr(virDomain) domain = NULL; -guint flags; - -g_variant_get(inArgs, "(u)", ); - -domain = virtDBusDomainGetVirDomain(connect, objectPath, error); -if (!domain) -return; - -if (virDomainDestroyFlags(domain, flags) < 0) -virtDBusUtilSetLastVirtError(error); -} - static void virtDBusDomainReboot(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -504,11 +505,11 @@ static virtDBusGDBusPropertyTable virtDBusDomainPropertyTable[] = { static virtDBusGDBusMethodTable virtDBusDomainMethodTable[] = { { "Create", virtDBusDomainCreate }, +{ "Destroy", virtDBusDomainDestroy }, { "GetVcpus", virtDBusDomainGetVcpus }, { "GetXMLDesc", virtDBusDomainGetXMLDesc }, { "GetStats", virtDBusDomainGetStats }, { "Shutdown", virtDBusDomainShutdown }, -{ "Destroy", virtDBusDomainDestroy }, { "Reboot", virtDBusDomainReboot }, { "Reset", virtDBusDomainReset }, { "Undefine", virtDBusDomainUndefine }, -- 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [dbus PATCH v2 08/11] APIs should appear in alphabetical order: Move Resume method
Signed-off-by: Katerina Koukiou--- data/org.libvirt.Domain.xml | 8 src/domain.c| 42 +- test/test_domain.py | 32 3 files changed, 41 insertions(+), 41 deletions(-) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 651e517..673260c 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -79,6 +79,10 @@ value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainReset"/> + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainResume"/> + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainUndefineFlags"/> @@ -88,10 +92,6 @@ https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSuspend"/> - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainResume"/> - https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectDomainEventDeviceAddedCallback"/> diff --git a/src/domain.c b/src/domain.c index 2178352..a16e49f 100644 --- a/src/domain.c +++ b/src/domain.c @@ -427,6 +427,26 @@ virtDBusDomainReset(GVariant *inArgs, virtDBusUtilSetLastVirtError(error); } +static void +virtDBusDomainResume(GVariant *inArgs G_GNUC_UNUSED, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath, + gpointer userData, + GVariant **outArgs G_GNUC_UNUSED, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) +{ +virtDBusConnect *connect = userData; +g_autoptr(virDomain) domain = NULL; + +domain = virtDBusDomainGetVirDomain(connect, objectPath, error); +if (!domain) +return; + +if (virDomainResume(domain) < 0) +virtDBusUtilSetLastVirtError(error); +} + static void virtDBusDomainUndefine(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -470,26 +490,6 @@ virtDBusDomainSuspend(GVariant *inArgs G_GNUC_UNUSED, virtDBusUtilSetLastVirtError(error); } -static void -virtDBusDomainResume(GVariant *inArgs G_GNUC_UNUSED, - GUnixFDList *inFDs G_GNUC_UNUSED, - const gchar *objectPath, - gpointer userData, - GVariant **outArgs G_GNUC_UNUSED, - GUnixFDList **outFDs G_GNUC_UNUSED, - GError **error) -{ -virtDBusConnect *connect = userData; -g_autoptr(virDomain) domain = NULL; - -domain = virtDBusDomainGetVirDomain(connect, objectPath, error); -if (!domain) -return; - -if (virDomainResume(domain) < 0) -virtDBusUtilSetLastVirtError(error); -} - static virtDBusGDBusPropertyTable virtDBusDomainPropertyTable[] = { { "Active", virtDBusDomainGetActive, NULL }, { "Autostart", virtDBusDomainGetAutostart, NULL }, @@ -511,9 +511,9 @@ static virtDBusGDBusMethodTable virtDBusDomainMethodTable[] = { { "Shutdown", virtDBusDomainShutdown }, { "Reboot", virtDBusDomainReboot }, { "Reset", virtDBusDomainReset }, +{ "Resume", virtDBusDomainResume }, { "Undefine", virtDBusDomainUndefine }, { "Suspend", virtDBusDomainSuspend }, -{ "Resume", virtDBusDomainResume }, { 0 } }; diff --git a/test/test_domain.py b/test/test_domain.py index edcf106..ceda19e 100755 --- a/test/test_domain.py +++ b/test/test_domain.py @@ -37,6 +37,22 @@ class TestDomain(libvirttest.BaseTestClass): raise e domain.Undefine(0) +def test_resume(self): +def domain_resumed(path, _event): +assert isinstance(path, dbus.ObjectPath) +self.loop.quit() + +self.connect.connect_to_signal('DomainEvent', domain_resumed, arg1='Resumed') + +obj, domain = self.domain() +domain.Suspend() +domain.Resume() + +state = obj.Get('org.libvirt.Domain', 'State', dbus_interface=dbus.PROPERTIES_IFACE) +assert state == 'running' + +self.main_loop() + def test_shutdown(self): def domain_stopped(path, _event): assert isinstance(path, dbus.ObjectPath) @@ -80,21 +96,5 @@ class TestDomain(libvirttest.BaseTestClass): self.main_loop() -def test_resume(self): -def domain_resumed(path, _event): -assert isinstance(path, dbus.ObjectPath) -self.loop.quit() - -self.connect.connect_to_signal('DomainEvent', domain_resumed, arg1='Resumed') - -obj, domain = self.domain() -domain.Suspend() -domain.Resume() - -state = obj.Get('org.libvirt.Domain', 'State', dbus_interface=dbus.PROPERTIES_IFACE) -assert state == 'running' - -self.main_loop() - if __name__ == '__main__': libvirttest.run() -- 2.15.0 -- libvir-list mailing list libvir-list@redhat.com
[libvirt] [dbus PATCH v2 00/11] Some code move to have functions sorted
Better do it now before the projects grows more. Katerina Koukiou (11): APIs should appear in alphabetical order: Move Active property APIs should appear in alphabetical order: Move Autostart property APIs should appear in alphabetical order: Move Id property APIs should appear in alphabetical order: Move UUID property APIs should appear in alphabetical order: Move Create method APIs should appear in alphabetical order: Move Destroy method APIs should appear in alphabetical order: Move GetStats method APIs should appear in alphabetical order: Move Resume method APIs should appear in alphabetical order: Move Undefine method APIs should appear in alphabetical order: Move Shutdown method APIs should appear in alphabetical order: Move ListDomains method data/org.libvirt.Connect.xml | 12 +-- data/org.libvirt.Domain.xml | 54 +-- src/connect.c| 82 src/domain.c | 220 +-- test/test_connect.py | 24 ++--- test/test_domain.py | 46 - 6 files changed, 219 insertions(+), 219 deletions(-) -- 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [dbus PATCH v2 07/11] APIs should appear in alphabetical order: Move GetStats method
Signed-off-by: Katerina Koukiou--- data/org.libvirt.Domain.xml | 14 - src/domain.c| 75 ++--- 2 files changed, 44 insertions(+), 45 deletions(-) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index ecd3f04..651e517 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -45,6 +45,13 @@ value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDestroyFlags"/> + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainListGetStats"/> + + + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetVcpusFlags"/> @@ -57,13 +64,6 @@ - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainListGetStats"/> - - - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainShutdownFlags"/> diff --git a/src/domain.c b/src/domain.c index f797627..2178352 100644 --- a/src/domain.c +++ b/src/domain.c @@ -264,6 +264,42 @@ virtDBusDomainDestroy(GVariant *inArgs, virtDBusUtilSetLastVirtError(error); } +G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainStatsRecordPtr, virDomainStatsRecordListFree); + +static void +virtDBusDomainGetStats(GVariant *inArgs, + GUnixFDList *inFDs G_GNUC_UNUSED, + const gchar *objectPath, + gpointer userData, + GVariant **outArgs, + GUnixFDList **outFDs G_GNUC_UNUSED, + GError **error) +{ +virtDBusConnect *connect = userData; +g_autoptr(virDomain) domain = NULL; +virDomainPtr domains[2]; +g_autoptr(virDomainStatsRecordPtr) records = NULL; +guint stats; +guint flags; +GVariant *grecords; + +g_variant_get(inArgs, "(uu)", , ); + +domain = virtDBusDomainGetVirDomain(connect, objectPath, error); +if (!domain) +return; + +domains[0] = domain; +domains[1] = NULL; + +if (virDomainListGetStats(domains, stats, , flags) != 1) +return virtDBusUtilSetLastVirtError(error); + +grecords = virtDBusUtilTypedParamsToGVariant(records[0]->params, + records[0]->nparams); + +*outArgs = g_variant_new_tuple(, 1); +} static void virtDBusDomainGetVcpus(GVariant *inArgs, @@ -320,43 +356,6 @@ virtDBusDomainGetXMLDesc(GVariant *inArgs, *outArgs = g_variant_new("(s)", xml); } -G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainStatsRecordPtr, virDomainStatsRecordListFree); - -static void -virtDBusDomainGetStats(GVariant *inArgs, - GUnixFDList *inFDs G_GNUC_UNUSED, - const gchar *objectPath, - gpointer userData, - GVariant **outArgs, - GUnixFDList **outFDs G_GNUC_UNUSED, - GError **error) -{ -virtDBusConnect *connect = userData; -g_autoptr(virDomain) domain = NULL; -virDomainPtr domains[2]; -g_autoptr(virDomainStatsRecordPtr) records = NULL; -guint stats; -guint flags; -GVariant *grecords; - -g_variant_get(inArgs, "(uu)", , ); - -domain = virtDBusDomainGetVirDomain(connect, objectPath, error); -if (!domain) -return; - -domains[0] = domain; -domains[1] = NULL; - -if (virDomainListGetStats(domains, stats, , flags) != 1) -return virtDBusUtilSetLastVirtError(error); - -grecords = virtDBusUtilTypedParamsToGVariant(records[0]->params, - records[0]->nparams); - -*outArgs = g_variant_new_tuple(, 1); -} - static void virtDBusDomainShutdown(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -506,9 +505,9 @@ static virtDBusGDBusPropertyTable virtDBusDomainPropertyTable[] = { static virtDBusGDBusMethodTable virtDBusDomainMethodTable[] = { { "Create", virtDBusDomainCreate }, { "Destroy", virtDBusDomainDestroy }, +{ "GetStats", virtDBusDomainGetStats }, { "GetVcpus", virtDBusDomainGetVcpus }, { "GetXMLDesc", virtDBusDomainGetXMLDesc }, -{ "GetStats", virtDBusDomainGetStats }, { "Shutdown", virtDBusDomainShutdown }, { "Reboot", virtDBusDomainReboot }, { "Reset", virtDBusDomainReset }, -- 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [dbus PATCH v2 02/11] APIs should appear in alphabetical order: Move Autostart property
Signed-off-by: Katerina Koukiou--- data/org.libvirt.Domain.xml | 8 src/domain.c| 42 +- test/test_domain.py | 2 +- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 1bbb383..fd7b085 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -7,6 +7,10 @@ https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainIsActive"/> + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetAutostart"/> + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetName"/> @@ -31,10 +35,6 @@ https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetState"/> - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetAutostart"/> - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetVcpusFlags"/> diff --git a/src/domain.c b/src/domain.c index 92cf21a..5109392 100644 --- a/src/domain.c +++ b/src/domain.c @@ -45,6 +45,26 @@ virtDBusDomainGetActive(const gchar *objectPath, *value = g_variant_new("b", !!active); } +static void +virtDBusDomainGetAutostart(const gchar *objectPath, + gpointer userData, + GVariant **value, + GError **error) +{ +virtDBusConnect *connect = userData; +g_autoptr(virDomain) domain = NULL; +gint autostart = 0; + +domain = virtDBusDomainGetVirDomain(connect, objectPath, error); +if (!domain) +return; + +if (virDomainGetAutostart(domain, ) < 0) +return virtDBusUtilSetLastVirtError(error); + +*value = g_variant_new("b", !!autostart); +} + static void virtDBusDomainGetName(const gchar *objectPath, gpointer userData, @@ -198,26 +218,6 @@ virtDBusDomainGetState(const gchar *objectPath, *value = g_variant_new("s", string); } -static void -virtDBusDomainGetAutostart(const gchar *objectPath, - gpointer userData, - GVariant **value, - GError **error) -{ -virtDBusConnect *connect = userData; -g_autoptr(virDomain) domain = NULL; -gint autostart = 0; - -domain = virtDBusDomainGetVirDomain(connect, objectPath, error); -if (!domain) -return; - -if (virDomainGetAutostart(domain, ) < 0) -return virtDBusUtilSetLastVirtError(error); - -*value = g_variant_new("b", !!autostart); -} - static void virtDBusDomainGetVcpus(GVariant *inArgs, GUnixFDList *inFDs G_GNUC_UNUSED, @@ -492,13 +492,13 @@ virtDBusDomainResume(GVariant *inArgs G_GNUC_UNUSED, static virtDBusGDBusPropertyTable virtDBusDomainPropertyTable[] = { { "Active", virtDBusDomainGetActive, NULL }, +{ "Autostart", virtDBusDomainGetAutostart, NULL }, { "Name", virtDBusDomainGetName, NULL }, { "UUID", virtDBusDomainGetUUID, NULL }, { "Id", virtDBusDomainGetId, NULL }, { "OSType", virtDBusDomainGetOsType, NULL }, { "Persistent", virtDBusDomainGetPersistent, NULL }, { "State", virtDBusDomainGetState, NULL }, -{ "Autostart", virtDBusDomainGetAutostart, NULL }, { 0 } }; diff --git a/test/test_domain.py b/test/test_domain.py index 58d389e..9a33758 100755 --- a/test/test_domain.py +++ b/test/test_domain.py @@ -11,13 +11,13 @@ class TestDomain(libvirttest.BaseTestClass): props = obj.GetAll('org.libvirt.Domain', dbus_interface=dbus.PROPERTIES_IFACE) assert isinstance(props['Active'], dbus.Boolean) +assert isinstance(props['Autostart'], dbus.Boolean) assert isinstance(props['Name'], dbus.String) assert isinstance(props['UUID'], dbus.String) assert isinstance(props['Id'], dbus.UInt32) assert isinstance(props['OSType'], dbus.String) assert isinstance(props['Persistent'], dbus.Boolean) assert isinstance(props['State'], dbus.String) -assert isinstance(props['Autostart'], dbus.Boolean) # Call all methods except Reset and GetStats, because the test backend # doesn't support those -- 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [dbus PATCH v2 03/11] APIs should appear in alphabetical order: Move Id property
Signed-off-by: Katerina Koukiou--- data/org.libvirt.Domain.xml | 8 src/domain.c| 44 ++-- test/test_domain.py | 2 +- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index fd7b085..edf7491 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -11,6 +11,10 @@ https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetAutostart"/> + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetID"/> + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetName"/> @@ -19,10 +23,6 @@ https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetUUIDString"/> - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetID"/> - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetOSType"/> diff --git a/src/domain.c b/src/domain.c index 5109392..87c205f 100644 --- a/src/domain.c +++ b/src/domain.c @@ -45,6 +45,27 @@ virtDBusDomainGetActive(const gchar *objectPath, *value = g_variant_new("b", !!active); } +static void +virtDBusDomainGetId(const gchar *objectPath, +gpointer userData, +GVariant **value, +GError **error) +{ +virtDBusConnect *connect = userData; +g_autoptr(virDomain) domain = NULL; +guint id; + +domain = virtDBusDomainGetVirDomain(connect, objectPath, error); +if (!domain) +return; + +id = virDomainGetID(domain); +if (id == (guint)-1) +id = 0; + +*value = g_variant_new("u", id); +} + static void virtDBusDomainGetAutostart(const gchar *objectPath, gpointer userData, @@ -106,27 +127,6 @@ virtDBusDomainGetUUID(const gchar *objectPath, *value = g_variant_new("s", uuid); } -static void -virtDBusDomainGetId(const gchar *objectPath, -gpointer userData, -GVariant **value, -GError **error) -{ -virtDBusConnect *connect = userData; -g_autoptr(virDomain) domain = NULL; -guint id; - -domain = virtDBusDomainGetVirDomain(connect, objectPath, error); -if (!domain) -return; - -id = virDomainGetID(domain); -if (id == (guint)-1) -id = 0; - -*value = g_variant_new("u", id); -} - static void virtDBusDomainGetOsType(const gchar *objectPath, gpointer userData, @@ -493,9 +493,9 @@ virtDBusDomainResume(GVariant *inArgs G_GNUC_UNUSED, static virtDBusGDBusPropertyTable virtDBusDomainPropertyTable[] = { { "Active", virtDBusDomainGetActive, NULL }, { "Autostart", virtDBusDomainGetAutostart, NULL }, +{ "Id", virtDBusDomainGetId, NULL }, { "Name", virtDBusDomainGetName, NULL }, { "UUID", virtDBusDomainGetUUID, NULL }, -{ "Id", virtDBusDomainGetId, NULL }, { "OSType", virtDBusDomainGetOsType, NULL }, { "Persistent", virtDBusDomainGetPersistent, NULL }, { "State", virtDBusDomainGetState, NULL }, diff --git a/test/test_domain.py b/test/test_domain.py index 9a33758..c3ffebf 100755 --- a/test/test_domain.py +++ b/test/test_domain.py @@ -12,9 +12,9 @@ class TestDomain(libvirttest.BaseTestClass): props = obj.GetAll('org.libvirt.Domain', dbus_interface=dbus.PROPERTIES_IFACE) assert isinstance(props['Active'], dbus.Boolean) assert isinstance(props['Autostart'], dbus.Boolean) +assert isinstance(props['Id'], dbus.UInt32) assert isinstance(props['Name'], dbus.String) assert isinstance(props['UUID'], dbus.String) -assert isinstance(props['Id'], dbus.UInt32) assert isinstance(props['OSType'], dbus.String) assert isinstance(props['Persistent'], dbus.Boolean) assert isinstance(props['State'], dbus.String) -- 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [dbus PATCH v2 01/11] APIs should appear in alphabetical order: Move Active property
Signed-off-by: Katerina Koukiou--- data/org.libvirt.Domain.xml | 8 src/domain.c| 44 ++-- test/test_domain.py | 2 +- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 7679018..1bbb383 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -3,6 +3,10 @@ + + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainIsActive"/> + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetName"/> @@ -19,10 +23,6 @@ https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetOSType"/> - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainIsActive"/> - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainIsPersistent"/> diff --git a/src/domain.c b/src/domain.c index 0066788..92cf21a 100644 --- a/src/domain.c +++ b/src/domain.c @@ -24,6 +24,27 @@ virtDBusDomainGetVirDomain(virtDBusConnect *connect, return domain; } +static void +virtDBusDomainGetActive(const gchar *objectPath, +gpointer userData, +GVariant **value, +GError **error) +{ +virtDBusConnect *connect = userData; +g_autoptr(virDomain) domain = NULL; +gint active; + +domain = virtDBusDomainGetVirDomain(connect, objectPath, error); +if (!domain) +return; + +active = virDomainIsActive(domain); +if (active < 0) +return virtDBusUtilSetLastVirtError(error); + +*value = g_variant_new("b", !!active); +} + static void virtDBusDomainGetName(const gchar *objectPath, gpointer userData, @@ -107,27 +128,6 @@ virtDBusDomainGetOsType(const gchar *objectPath, *value = g_variant_new("s", osType); } -static void -virtDBusDomainGetActive(const gchar *objectPath, -gpointer userData, -GVariant **value, -GError **error) -{ -virtDBusConnect *connect = userData; -g_autoptr(virDomain) domain = NULL; -gint active; - -domain = virtDBusDomainGetVirDomain(connect, objectPath, error); -if (!domain) -return; - -active = virDomainIsActive(domain); -if (active < 0) -return virtDBusUtilSetLastVirtError(error); - -*value = g_variant_new("b", !!active); -} - static void virtDBusDomainGetPersistent(const gchar *objectPath, gpointer userData, @@ -491,11 +491,11 @@ virtDBusDomainResume(GVariant *inArgs G_GNUC_UNUSED, } static virtDBusGDBusPropertyTable virtDBusDomainPropertyTable[] = { +{ "Active", virtDBusDomainGetActive, NULL }, { "Name", virtDBusDomainGetName, NULL }, { "UUID", virtDBusDomainGetUUID, NULL }, { "Id", virtDBusDomainGetId, NULL }, { "OSType", virtDBusDomainGetOsType, NULL }, -{ "Active", virtDBusDomainGetActive, NULL }, { "Persistent", virtDBusDomainGetPersistent, NULL }, { "State", virtDBusDomainGetState, NULL }, { "Autostart", virtDBusDomainGetAutostart, NULL }, diff --git a/test/test_domain.py b/test/test_domain.py index 7ec2318..58d389e 100755 --- a/test/test_domain.py +++ b/test/test_domain.py @@ -10,11 +10,11 @@ class TestDomain(libvirttest.BaseTestClass): obj, domain = self.domain() props = obj.GetAll('org.libvirt.Domain', dbus_interface=dbus.PROPERTIES_IFACE) +assert isinstance(props['Active'], dbus.Boolean) assert isinstance(props['Name'], dbus.String) assert isinstance(props['UUID'], dbus.String) assert isinstance(props['Id'], dbus.UInt32) assert isinstance(props['OSType'], dbus.String) -assert isinstance(props['Active'], dbus.Boolean) assert isinstance(props['Persistent'], dbus.Boolean) assert isinstance(props['State'], dbus.String) assert isinstance(props['Autostart'], dbus.Boolean) -- 2.15.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [qemu RFC] qapi: add "firmware.json"
On 04/09/18 10:26, Gerd Hoffmann wrote: >> +# { >> +# "executable": { >> +# "pathname": "/usr/share/OVMF/OVMF_CODE.secboot.fd", >> +# "description": "OVMF with Secure Boot and SMM-protected varstore", >> +# "tags": [ >> +# "FD_SIZE_4MB", >> +# "IA32X64", >> +# "SECURE_BOOT_ENABLE", >> +# "SMM_REQUIRE" >> +# ] >> +# }, >> +# "type": "uefi", >> +# "targets": [ >> +# "x86_64" >> +# ], >> +# "sysfw-map": { >> +# "device": "flash", >> +# "write": "denied" >> +# }, >> +# "nvram-slots": [ >> +# { >> +# "slot-id": 1, >> +# "nvram-map" : { >> +# "device": "flash", >> +# "write": "restricted-to-secure-context" >> +# }, > > What is "slot-id"? The pflash index? Yes, it might be defined like that, for the i440fx and q35 machine types. This correspondence would be implemented in libvirtd, I suppose. However, I don't think such a correspondence is mandatory. At first approach, slot-id is just the key that tells the nvramslots apart. > shouldn't we also specify the > index for the executable somewhere? Maybe :) > Maybe the field should be moved > into FirmwareMapping? I couldn't come up with a good use case where you wouldn't map the *system* firmware in a predefined pflash unit (or other device unit). So I thought that needed no slot-id. Thanks Laszlo -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [qemu RFC] qapi: add "firmware.json"
On 04/09/18 10:19, Gerd Hoffmann wrote: >>> +{ 'enum' : 'SystemFirmwareType', >>> + 'data' : [ 'bios', 'slof', 'uboot', 'uefi' ] } >> >> The naming here is quite a bad mixture between firmware interface >> ('bios', 'uefi') and firmware implementations ('slof', 'uboot'). There >> could be other implementations of BIOS or UEFI than SeaBIOS and EDK2 ... >> so I'd suggest to rather name them 'seabios' and 'edk2' here instead. > > uboot for example implements uefi unterfaces too (dunno how complete, > but reportly recent versions can run uefi shell and grub just fine). Indeed: when I was struggling with this enum type and tried to look for more firmware types to add, my googling turned up the "UEFI on Top of U-Boot" whitepaper, from Alex and Andreas :) Again, this reaches to the root of the problem: when a user creates a new domain, using high-level tools, they just want to tick "UEFI". (Dan has emphasized this to me several times, so I think I get the idea by now, if not the full environment.) We cannot ask the user, "please be more specific, do you want UEFI from edk2, or UEFI on top of U-Boot?" Instead, each of those firmware images will have to come with a JSON document that states "uefi" in SystemFirmware.type, and the host admin will be responsible for establishing a priority order between them. Then, when the user asks for "UEFI" (and no more details), they'll get (compatibly with the target architecture) whichever firmware the host admin marked as "higher priority". (Please be aware that with this argument, I'm trying to put myself into Dan's shoes. It doesn't come *naturally* to me; in fact I'm viscerally screaming inside at this amount of "fuzz". Personally I'd say, "I can give you what you *say*, not what you *mean*, so *say* what you mean". Apparently, that cannot work here, because what users mean is "UEFI" and nothing more. I have to accept that.) Thanks Laszlo -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [qemu RFC] qapi: add "firmware.json"
On 04/09/18 10:08, Thomas Huth wrote: > On 07.04.2018 02:01, Laszlo Ersek wrote: >> Add a schema that describes the properties of virtual machine firmware. > [...] >> +## >> +# @SystemFirmware: >> +# >> +# Describes a system firmware binary and any NVRAM slots that it requires. >> +# >> +# @executable: Identifies the platform firmware executable. >> +# >> +# @type: The type by which the system firmware is commonly known. This is >> the >> +#main search key by which management software looks up a system >> +#firmware image for a new domain. >> +# >> +# @targets: a non-empty list of target architectures that are capable of >> +# executing the system firmware >> +# >> +# @sysfw-map: the mapping requirements of the system firmware binary >> +# >> +# @nvram-slots: A list of NVRAM slots that are required by the system >> firmware. >> +# The @slot-id field must be unique across the list. >> Importantly, >> +# if any @FirmwareAccess is @restricted-to-secure-context in >> +# @sysfw-map or in any @nvram-map in @nvram-slots, then (a) >> the >> +# virtual machine configuration is required to emulate the >> secure >> +# code execution context (as defined for @targets), and (b) >> the >> +# virtual machine configuration is required to actually >> restrict >> +# the access in question to the secure execution context. >> +# >> +# @supports-uefi-secure-boot: Whether the system firmware implements the >> +# software interfaces for UEFI Secure Boot, as >> +# defined in the UEFI specification. If the >> field >> +# is missing, its assumed value is 'false'. >> +# >> +# @supports-amd-sev: Whether the system firmware supports running under AMD >> +#Secure Encrypted Virtualization, as specified in the >> AMD64 >> +#Architecture Programmer's Manual. If the field is >> missing, >> +#its assumed value is 'false'. >> +# >> +# @supports-acpi-s3: Whether the system firmware supports S3 sleep (suspend >> to >> +#RAM), as defined in the ACPI specification. If the >> field >> +#is missing, its assumed value is 'false'. >> +# >> +# @supports-acpi-s4: Whether the system firmware supports S4 hibernation >> +#(suspend to disk), as defined in the ACPI >> specification. >> +#If the field is missing, its assumed value is 'false'. >> +# >> +# Since: 2.13 >> +# >> +# Examples: >> +# >> +# { >> +# "executable": { >> +# "pathname": "/usr/share/seabios/bios-256k.bin", >> +# "description": "SeaBIOS", >> +# "tags": [ >> +# "CONFIG_ROM_SIZE=256" >> +# ] >> +# }, >> +# "type": "bios", >> +# "targets": [ >> +# "i386", >> +# "x86_64" >> +# ], >> +# "sysfw-map": { >> +# "device": "memory", >> +# "write": "denied" >> +# }, >> +# "supports-acpi-s3": true, >> +# "supports-acpi-s4": true >> +# } >> +# >> +# { >> +# "executable": { >> +# "pathname": "/usr/share/OVMF/OVMF_CODE.secboot.fd", >> +# "description": "OVMF with Secure Boot and SMM-protected varstore", >> +# "tags": [ >> +# "FD_SIZE_4MB", >> +# "IA32X64", >> +# "SECURE_BOOT_ENABLE", >> +# "SMM_REQUIRE" >> +# ] >> +# }, >> +# "type": "uefi", >> +# "targets": [ >> +# "x86_64" >> +# ], >> +# "sysfw-map": { >> +# "device": "flash", >> +# "write": "denied" >> +# }, >> +# "nvram-slots": [ >> +# { >> +# "slot-id": 1, >> +# "nvram-map" : { >> +# "device": "flash", >> +# "write": "restricted-to-secure-context" >> +# }, >> +# "templates": [ >> +# { >> +# "pathname": "/usr/share/OVMF/OVMF_VARS.fd", >> +# "description": "empty varstore template" >> +# }, >> +# { >> +# "pathname": "/usr/share/OVMF/OVMF_VARS.secboot.fd", >> +# "description": "varstore template with the Microsoft >> certificates enrolled for Secure Boot", >> +# "tags": [ >> +# "mscerts" >> +# ] >> +# } >> +# ] >> +# } >> +# ], >> +# "supports-uefi-secure-boot": true, >> +# "supports-amd-sev": true, >> +# "supports-acpi-s3": true >> +# } >> +# >> +# { >> +# "executable": { >> +# "pathname": "/usr/share/AAVMF/AAVMF_CODE.fd", >> +# "description": "ARM64 UEFI firmware", >> +# "tags": [ >> +# "AARCH64" >> +# ] >> +# }, >> +# "type": "uefi", >> +# "targets": [ >> +#
Re: [libvirt] [qemu RFC] qapi: add "firmware.json"
On 04/09/18 09:26, Thomas Huth wrote: > Hi Laszlo, > > On 07.04.2018 02:01, Laszlo Ersek wrote: >> Add a schema that describes the properties of virtual machine firmware. >> >> Each firmware executable installed on a host system should come with a >> JSON file that conforms to this schema, and informs the management >> applications about the firmware's properties. >> >> In addition, a configuration directory with symlinks to the JSON files >> should exist, with the symlinks carefully named to reflect a priority >> order. Management applications can then search this directory in priority >> order for the first firmware executable that satisfies their search >> criteria. The found JSON file provides the management layer with domain >> configuration bits that are required to run the firmware binary. > [...] >> +## >> +# @FirmwareDevice: >> +# >> +# Defines the device types that a firmware file can be mapped into. >> +# >> +# @memory: The firmware file is to be mapped into memory. >> +# >> +# @kernel: The firmware file is to be loaded like a Linux kernel. This is >> +# similar to @memory but may imply additional processing that is >> +# specific to the target architecture. >> +# >> +# @flash: The firmware file is to be mapped into a pflash chip. >> +# >> +# Since: 2.13 >> +## >> +{ 'enum' : 'FirmwareDevice', >> + 'data' : [ 'memory', 'kernel', 'flash' ] } > > This is not fully clear to me... what is this exactly good for? Is this > a way to say how the firmware should be loaded, i.e. via "-bios", > "-kernel" or "-pflash" parameter? If so, the term "memory" is quite > misleading since files that are loaded via -bios can also end up in an > emulated ROM chip. I threw in "-kernel" because, although it also (usually?) means "memory", I expected people would want it separate. Regarding memory vs. pflash, I thought that these two, combined with the access permissions, could cover all of RAM, ROM, and read-only and read-write pflash too. So, "-bios" (-> ROM) boils down to "memory", with write access denied -- please see the SeaBIOS example near the end. > > [...] >> +## >> +# @NVRAMSlot: >> +# >> +# Defines the mapping properties of an NVRAM slot, and associates compatible >> +# NVRAM templates with the NVRAM slot. >> +# >> +# @slot-id: The numeric identifier of the NVRAM slot. The interpretation of >> +# @slot-id is specific to the target architecture and the chosen >> +# system firmware. >> +# >> +# @nvram-map: the mapping requirements of this NVRAM slot >> +# >> +# @templates: A non-empty list of @FirmwareFile elements. Any @FirmwareFile >> +# identified by this list as an NVRAM template can be copied to >> +# create an actual NVRAM file, and the NVRAM file can be mapped >> +# into the NVRAM slot identified by @slot-id, subject to the >> +# mapping requirements in @nvram-map. >> +# >> +# Since: 2.13 >> +## >> +{ 'struct' : 'NVRAMSlot', >> + 'data' : { 'slot-id' : 'uint64', > > Not sure whether I've got the idea here right, so take this with a grain > of salt: Maybe 'uint64' is not flexible enough here. PAPR uses both, an > ID and a name (string), see chapter 8.3 in > https://members.openpowerfoundation.org/document/dl/469 ... but I guess > we could start with the 'slot-id' here and add a name field later if > necessary. I only added "slot-id" as an initial place holder for telling apart the individual NVRAMSlot elements in "SystemFirmware.nvram-slots". I expected a scalar wouldn't be expressive enough for all arches, but, as you say, it can be extended later. > >> + 'nvram-map' : 'FirmwareMapping', >> + 'templates' : [ 'FirmwareFile' ] } } >> + >> +## >> +# @SystemFirmwareType: >> +# >> +# Lists system firmware types commonly used with QEMU virtual machines. >> +# >> +# @bios: The system firmware was built from the SeaBIOS project. >> +# >> +# @slof: The system firmware was built from the Slimline Open Firmware >> project. >> +# >> +# @uboot: The system firmware was built from the U-Boot project. >> +# >> +# @uefi: The system firmware was built from the edk2 (EFI Development Kit >> II) >> +#project. >> +# >> +# Since: 2.13 >> +## >> +{ 'enum' : 'SystemFirmwareType', >> + 'data' : [ 'bios', 'slof', 'uboot', 'uefi' ] } > > The naming here is quite a bad mixture between firmware interface > ('bios', 'uefi') and firmware implementations ('slof', 'uboot'). There > could be other implementations of BIOS or UEFI than SeaBIOS and EDK2 ... > so I'd suggest to rather name them 'seabios' and 'edk2' here instead. Sure, I'm totally ready to follow community advice here (too). In fact this is the one element I dislike the most about the schema -- it's the fuzziest part, yet it is the most important element for libvirt. Because users and higher level apps just want to say "give me UEFI". If I have to ask "OK, but UEFI built from edk2 or something else?", then it's a lost cause
Re: [libvirt] [libvirt PATCH v2 05/44] Deprecate QEMU_CAPS_PCI_MULTIFUNCTION
On Mon, 2018-04-09 at 17:19 +0200, Ján Tomko wrote: > Supported since QEMU 0.13, but we require QEMU 0.15. s/0.15/1.5.0/ > diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c > index 24eb8cbc5b..288de59de1 100644 > --- a/tests/qemuxml2argvtest.c > +++ b/tests/qemuxml2argvtest.c > @@ -846,7 +846,6 @@ mymain(void) > QEMU_CAPS_ENABLE_KVM, > QEMU_CAPS_BOOT_MENU, > QEMU_CAPS_PIIX3_USB_UHCI, > -QEMU_CAPS_PCI_MULTIFUNCTION, > QEMU_CAPS_DRIVE_AIO, > QEMU_CAPS_CCID_PASSTHRU, > QEMU_CAPS_CHARDEV_SPICEVMC, > > [ ...etc... ] There are a couple new instances introduced by commit d47de9e6988, you'll want to get rid of those as well. Reviewed-by: Andrea Bolognani-- Andrea Bolognani / Red Hat / Virtualization -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] Race condition between qemuDomainCreate and qemuDomainDestroy
On 04/06/2018 12:27 PM, John Ferlan wrote: > > On 04/03/2018 07:47 AM, Marc Hartmayer wrote: >> On Tue, Mar 20, 2018 at 11:25 AM +0100, Marc Hartmayer >>wrote: >>> Hi, >>> >>> there is a race condition between 'qemuDomainCreate' and >>> 'qemuDomainDestroy' causing a NULL pointer segmentation fault when >>> accessing priv->monConfig. The race condition can be easily reproduced >>> using gdb. >>> >>> (gdb) set non-stop on >>> # set breakpoint on line 'mon = qemuMonitorOpen(vm, …)' >>> (gdb) b qemu_process.c:1799 >>> # Actually, this second breakpoint is optional but it’s good to see >>> where priv->monConfig is set to NULL >>> # set breakpoint on line priv->monConfig = NULL; >>> (gdb) b qemu_process.c:6589 >>> (gdb) run >>> # continue all threads - just for the case we hit a breakpoint already >>> (gdb) c -a >>> >>> Now start a domain (that is using QEMU) >>> >>> $ virsh start domain >>> >>> The first breakpoint will be hit. Now run in a second shell >>> >>> $ virsh destroy domain >>> >>> The second breakpoint will be hit. Continue the thread where the second >>> breakpoint was hit (for this example this is thread 4) >>> >>> (gdb) thread apply 4 continue >>> >>> Now continue the thread where the first breakpoint was hit. >>> >>> => Segmentation fault because of a NULL pointer dereference at >>>config->value >>> >>> Since I'm not very familiar with that part of the code, I wanted to ask >>> for your advice. >>> >>> Thanks in advance. >>> >>> Beste Grüße / Kind regards >>>Marc Hartmayer >>> >>> IBM Deutschland Research & Development GmbH >>> Vorsitzende des Aufsichtsrats: Martina Koederitz >>> Geschäftsführung: Dirk Wittkopp >>> Sitz der Gesellschaft: Böblingen >>> Registergericht: Amtsgericht Stuttgart, HRB 243294 >> Any ideas? >> > Seeing as no one else has an exact or authoritative answer... > > qemuDomainCreate{XML|WithFlags} (and a few others) will call > qemuProcessBeginJob which calls qemuDomainObjBeginAsyncJob and > qemuDomainObjSetAsyncJobMask which IIUC allows QEMU_JOB_DESTROY > to be run. > > The qemuDomainDestroyFlags calls qemuProcessBeginStopJob which calls > qemuDomainObjBeginJob (e.g. sync job) using QEMU_JOB_DESTROY, which > again IIUC is allowed to happen alongside the Async job because of the > mask setting. > > In the code where you've broken during create, the @vm object lock is > dropped allowing destroy to obtain it. So with the perfect timing and > storm the window of opportunity does exist that the monConfig could be > free'd and thus priv->monConfig set to NULL before or during the create > processing uses it in qemuMonitorOpen. If during the processing, then > obviously the config-> would "appear" to be valid, but it may not > actually be what was passed. > > The fix I believe involves using objects for virDomainChrSourceDef > rather than VIR_ALLOC'd and VIR_FREE'd memory directly. I've put > together a few patches and will post them shortly. Using the patches I > don't see a core, but rather the (I believe) expected "error: internal > error: qemu unexpectedly closed the monitor" Isn't this just a symptom of a wider problem? Your patches fix the problem for monConfig, but what about all the other members of the domain object that aren't protected with the trappings of virObject? Isn't it just as likely that they could fall prey to the same problem? -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 0/8] Simplify & standarize more parts of driver URI handling
On Mon, Apr 09, 2018 at 04:45:43PM +0100, Daniel P. Berrangé wrote: > The motivating goal of this series was/is to make it possible to answer > whether there is any driver registered to handle a given URI scheme > without having to call into the drivers. > > Ultimately this ended up being a nice simplification and cleanup of > driver URI opening code, removing repetative logic from all drivers. BTW, this is rebased above Jim's v2 patch for killing the XenD driver https://www.redhat.com/archives/libvir-list/2018-April/msg00524.html Regards, Daniel -- |: https://berrange.com -o-https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o-https://fstop138.berrange.com :| |: https://entangle-photo.org-o-https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [dbus PATCH] APIs should appear in aplhabetical order in all files.
On Mon, 2018-04-09 at 17:45 +0200, Pavel Hrdina wrote: > On Mon, Apr 09, 2018 at 05:10:48PM +0200, Katerina Koukiou wrote: > > In C and XML files the order is: > > 1) properties > > 2) methods > > 3) signals > > All of them sorted in their category alphabetically. > > > > Signed-off-by: Katerina Koukiou> > --- > > data/org.libvirt.Connect.xml | 12 +-- > > data/org.libvirt.Domain.xml | 54 ++-- > > src/connect.c| 2 +- > > src/domain.c | 200 + > > -- > > 4 files changed, 134 insertions(+), 134 deletions(-) > > I would split it into two patches, one per each file to make the diff > less crazy. I'm also considering to split it per every > property/method > move to make the diff clean and obvious that it's a simple > move. It's > easy to miss something. Ok I 'll split per property/method and repost. I agree the patch is not readable. > > > diff --git a/data/org.libvirt.Connect.xml > > b/data/org.libvirt.Connect.xml > > index 5b49ed9..55260cc 100644 > > --- a/data/org.libvirt.Connect.xml > > +++ b/data/org.libvirt.Connect.xml > > @@ -25,12 +25,6 @@ > > > value="See https://libvirt.org/html/libvirt-libvirt-host.h > > tml#virConnectGetVersion"/>; > > > > - > > - > -value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virConnectListAllDomains"/>; > > - > > - > > - > > > > > value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainCreateXML"/>; > > @@ -73,6 +67,12 @@ > > > > > > > > + > > + > +value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virConnectListAllDomains"/>; > > + > > + > > + > > > > > value="See https://libvirt.org/html/libvirt-libvirt-networ > > k.html#virConnectListAllNetworks"/>; > > diff --git a/data/org.libvirt.Domain.xml > > b/data/org.libvirt.Domain.xml > > index 7679018..78378bb 100644 > > --- a/data/org.libvirt.Domain.xml > > +++ b/data/org.libvirt.Domain.xml > > @@ -3,25 +3,25 @@ > > > > > > > > - > > + > > > -value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetName"/>; > > +value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainIsActive"/>; > > > > - > > + > > > -value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetUUIDString"/>; > > +value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetAutostart"/>; > > > > > > > value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetID"/>; > > > > - > > + > > > -value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetOSType"/>; > > +value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetName"/>; > > > > - > > + > > > -value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainIsActive"/>; > > +value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetOSType"/>; > > > > > > > @@ -31,21 +31,19 @@ > > > value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetState"/>; > > > > - > > + > > > -value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetAutostart"/>; > > +value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetUUIDString"/>; > > > > - > > + > > > -value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetVcpusFlags"/>; > > +value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainCreateWithFlags"/>; > > > > - > > > > - > > + > > > -value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetXMLDesc"/>; > > +value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainDestroyFlags"/>; > > > > - > > > > > > > @@ -54,15 +52,17 @@ > > > > > > > > - > > + > > > -value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainShutdownFlags"/>; > > +value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetVcpusFlags"/>; > > > > + > > > > - > > + > > > -value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainDestroyFlags"/>; > > +value="See https://libvirt.org/html/libvirt-libvirt-domain > > .html#virDomainGetXMLDesc"/>; > > > > + > > > > > > > @@ -74,23 +74,23 @@ > >
Re: [libvirt] [libvirt PATCH v2 04/44] Require QEMU 1.5.0
On Thu, 2018-04-05 at 14:22 +0200, Ján Tomko wrote: > According to the policy described on https://libvirt.org/platforms.html > the QEMU versions in the oldest relevant releses are: Empty line here. Possibly indent the distros with two spaces. > SLES 12: 2.0.0 > RHEL 7: 1.5.3 > Ubuntu 14.04: 2.0.0 > > Set the minimum to 1.5.0 and drop support for RHEL 6. > > This lets us drop the -help parsing code and assume lots of > capabilities. Except we already dropped the -help parsing code in the previous commit, and we haven't started assuming capabilities yet :) So I would use This will let us assume lots of capabilities. here. > diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c > index 0be39b76dd..f427cfdeaa 100644 > --- a/src/qemu/qemu_capabilities.c > +++ b/src/qemu/qemu_capabilities.c > @@ -3755,6 +3755,9 @@ virQEMUCapsProbeQMPSchemaCapabilities(virQEMUCapsPtr > qemuCaps, > return 0; > } > > +#define QEMU_MIN_MAJOR 1 > +#define QEMU_MIN_MINOR 5 > +#define QEMU_MIN_MICRO 0 > > int > virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps, > @@ -3785,9 +3788,12 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps, > VIR_DEBUG("Got version %d.%d.%d (%s)", >major, minor, micro, NULLSTR(package)); > > -if (major < 1 || (major == 1 && minor < 2)) { > -VIR_DEBUG("Not new enough for QMP capabilities detection"); > -ret = 0; > +if (major < QEMU_MIN_MAJOR || > +(major == QEMU_MIN_MAJOR && minor < QEMU_MIN_MINOR)) { > +virReportError(VIR_ERR_CONFIG_UNSUPPORTED, > + _("QEMU version >= %d.%d.%d is required, but %d.%d.%d > found"), > + QEMU_MIN_MAJOR, QEMU_MIN_MINOR, QEMU_MIN_MICRO, > + major, minor, micro); > goto cleanup; > } I think it would make more sense for the check and the error message to be converted in the previous commit, where you raise the minimum QEMU version to 1.2.0, so that this commit will end up only changing QEMU_MIN_MINOR to 5 and dropping "ret = 0" (along with the expected test suite churn, of course). With the comments addressed, Reviewed-by: Andrea Bolognani-- Andrea Bolognani / Red Hat / Virtualization -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [libvirt PATCH v2 14/44] Deprecate QEMU_CAPS_SDL
On 04/09/2018 10:33 AM, Daniel P. Berrangé wrote: > On Mon, Apr 09, 2018 at 05:20:07PM +0200, Ján Tomko wrote: >> Implied by QEMU >= 1.2.0. >> >> +++ b/src/qemu/qemu_capabilities.h >> @@ -85,7 +85,7 @@ typedef enum { >> /* 25 */ >> X_QEMU_CAPS_BALLOON, /* -balloon available */ >> X_QEMU_CAPS_DEVICE, /* Is the -device arg available */ >> -QEMU_CAPS_SDL, /* Is the new -sdl arg available */ >> +X_QEMU_CAPS_SDL, /* Is the new -sdl arg available */ > > Hmm, even if -sdl is available, QEMU might have been built without SDL > support. I wonder if there is any way we can probe to see if SDL is > truely available I'm not sure if qemu's query-command-line-options tracks this yet (one of Markus' goal on cleaning up QemuOpts to be introspectible); there's also Marc-Andre's work towards making query-qmp-schema actually be compiled with appropriate #if conditionals, but that won't land before qemu 2.13. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org signature.asc Description: OpenPGP digital signature -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [PATCH 7/8] driver: enforce a non-NULL URI scheme
Now that the legacy Xen driver has been dropped, we no longer need to support URIs such as "/path/to/xend/socket", and so can mandate that a URI scheme must always be present. Signed-off-by: Daniel P. Berrangé--- src/libvirt.c | 15 ++ src/remote/remote_driver.c | 74 -- 2 files changed, 41 insertions(+), 48 deletions(-) diff --git a/src/libvirt.c b/src/libvirt.c index 30345af10d..600beaa4d5 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -905,7 +905,7 @@ virConnectGetDefaultURI(virConfPtr conf, static int virConnectCheckURIMissingSlash(const char *uristr, virURIPtr uri) { -if (!uri->scheme || !uri->path || !uri->server) +if (!uri->path || !uri->server) return 0; /* To avoid false positives, only check drivers that mandate @@ -1018,6 +1018,13 @@ virConnectOpenInternal(const char *name, NULLSTR(ret->uri->user), ret->uri->port, NULLSTR(ret->uri->path)); +if (ret->uri->scheme == NULL) { +virReportError(VIR_ERR_NO_CONNECT, + _("URI '%s' does not include a driver name"), + name); +goto failed; +} + if (virConnectCheckURIMissingSlash(uristr, ret->uri) < 0) { goto failed; @@ -1038,7 +1045,7 @@ virConnectOpenInternal(const char *name, * not being able to connect to libvirtd or not being able to find * certificates. */ if (STREQ(virConnectDriverTab[i]->hypervisorDriver->name, "remote") && -ret->uri != NULL && ret->uri->scheme != NULL && +ret->uri != NULL && ( #ifndef WITH_PHYP STRCASEEQ(ret->uri->scheme, "phyp") || @@ -1081,10 +1088,6 @@ virConnectOpenInternal(const char *name, VIR_DEBUG("No URI, skipping driver with URI whitelist"); continue; } -if (!ret->uri->scheme) { -VIR_DEBUG("No URI scheme, skipping driver with URI whitelist"); -continue; -} VIR_DEBUG("Checking for supported URI schemes"); for (s = 0; virConnectDriverTab[i]->uriSchemes[s] != NULL; s++) { if (STREQ(ret->uri->scheme, virConnectDriverTab[i]->uriSchemes[s])) { diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index 901a2ebfbd..ce2ea27cd8 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -771,51 +771,41 @@ doRemoteOpen(virConnectPtr conn, * URIs we don't care about */ if (conn->uri) { -if (!conn->uri->scheme) { -/* This is the ///var/lib/xen/xend-socket local path style */ -if (!conn->uri->path) -return VIR_DRV_OPEN_DECLINED; -if (conn->uri->path[0] != '/') -return VIR_DRV_OPEN_DECLINED; - -transport = trans_unix; -} else { -transport_str = get_transport_from_scheme(conn->uri->scheme); +transport_str = get_transport_from_scheme(conn->uri->scheme); -if (!transport_str) { -if (conn->uri->server) -transport = trans_tls; -else -transport = trans_unix; -} else { -if (STRCASEEQ(transport_str, "tls")) { -transport = trans_tls; -} else if (STRCASEEQ(transport_str, "unix")) { -if (conn->uri->server) { -virReportError(VIR_ERR_INVALID_ARG, - _("using unix socket and remote " - "server '%s' is not supported."), - conn->uri->server); -return VIR_DRV_OPEN_ERROR; -} else { -transport = trans_unix; -} -} else if (STRCASEEQ(transport_str, "ssh")) { -transport = trans_ssh; -} else if (STRCASEEQ(transport_str, "libssh2")) { -transport = trans_libssh2; -} else if (STRCASEEQ(transport_str, "ext")) { -transport = trans_ext; -} else if (STRCASEEQ(transport_str, "tcp")) { -transport = trans_tcp; -} else if (STRCASEEQ(transport_str, "libssh")) { -transport = trans_libssh; -} else { -virReportError(VIR_ERR_INVALID_ARG, "%s", - _("remote_open: transport in URL not recognised " - "(should be tls|unix|ssh|ext|tcp|libssh2)")); +if (!transport_str) { +if (conn->uri->server) +transport = trans_tls; +else +transport = trans_unix; +
[libvirt] [PATCH 6/8] driver: ensure NULL URI isn't passed to drivers with whitelisted URIs
Ensuring that we don't call the virDrvConnectOpen method with a NULL URI means that the drivers can drop various checks for NULL URIs. These were not needed anymore since the probe functionality was split Signed-off-by: Daniel P. Berrangé--- src/bhyve/bhyve_driver.c| 26 +++-- src/esx/esx_driver.c| 4 --- src/hyperv/hyperv_driver.c | 4 --- src/interface/interface_backend_netcf.c | 40 +++-- src/interface/interface_backend_udev.c | 40 +++-- src/libvirt.c | 6 +++- src/libxl/libxl_driver.c| 34 ++--- src/lxc/lxc_driver.c| 33 + src/network/bridge_driver.c | 40 +++-- src/node_device/node_device_driver.c| 40 +++-- src/nwfilter/nwfilter_driver.c | 26 +++-- src/openvz/openvz_driver.c | 38 +++- src/phyp/phyp_driver.c | 3 -- src/qemu/qemu_driver.c | 52 +++-- src/secret/secret_driver.c | 40 +++-- src/storage/storage_driver.c| 40 +++-- src/test/test_driver.c | 4 --- src/uml/uml_driver.c| 44 +--- src/vbox/vbox_common.c | 3 -- src/vbox/vbox_driver.c | 3 -- src/vmware/vmware_driver.c | 17 --- src/vz/vz_driver.c | 3 -- src/xenapi/xenapi_driver.c | 3 -- 23 files changed, 224 insertions(+), 319 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 21754dfc10..7d6439d79d 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -199,21 +199,17 @@ bhyveConnectOpen(virConnectPtr conn, { virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR); - if (conn->uri == NULL) { - return VIR_DRV_OPEN_DECLINED; - } else { - if (STRNEQ_NULLABLE(conn->uri->path, "/system")) { -virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unexpected bhyve URI path '%s', try bhyve:///system"), - conn->uri->path); -return VIR_DRV_OPEN_ERROR; - } - - if (bhyve_driver == NULL) { - virReportError(VIR_ERR_INTERNAL_ERROR, -"%s", _("bhyve state driver is not active")); - return VIR_DRV_OPEN_ERROR; - } + if (STRNEQ_NULLABLE(conn->uri->path, "/system")) { + virReportError(VIR_ERR_INTERNAL_ERROR, +_("Unexpected bhyve URI path '%s', try bhyve:///system"), +conn->uri->path); + return VIR_DRV_OPEN_ERROR; + } + + if (bhyve_driver == NULL) { + virReportError(VIR_ERR_INTERNAL_ERROR, +"%s", _("bhyve state driver is not active")); + return VIR_DRV_OPEN_ERROR; } if (virConnectOpenEnsureACL(conn) < 0) diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index 9b6944ba59..335d9a970d 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -851,10 +851,6 @@ esxConnectOpen(virConnectPtr conn, virConnectAuthPtr auth, virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR); -/* Decline if the URI is NULL or the scheme is NULL */ -if (!conn->uri) -return VIR_DRV_OPEN_DECLINED; - if (STRCASENEQ(conn->uri->scheme, "vpx") && conn->uri->path && STRNEQ(conn->uri->path, "/")) { VIR_WARN("Ignoring unexpected path '%s' for non-vpx scheme '%s'", diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c index 4ad8855dcc..d02c0ac373 100644 --- a/src/hyperv/hyperv_driver.c +++ b/src/hyperv/hyperv_driver.c @@ -128,10 +128,6 @@ hypervConnectOpen(virConnectPtr conn, virConnectAuthPtr auth, virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR); -/* Decline if the URI is NULL or the scheme is NULL */ -if (conn->uri == NULL) -return VIR_DRV_OPEN_DECLINED; - /* Require server part */ if (conn->uri->server == NULL) { virReportError(VIR_ERR_INVALID_ARG, "%s", diff --git a/src/interface/interface_backend_netcf.c b/src/interface/interface_backend_netcf.c index ff3443c8e6..cc2402febb 100644 --- a/src/interface/interface_backend_netcf.c +++ b/src/interface/interface_backend_netcf.c @@ -159,31 +159,25 @@ netcfConnectOpen(virConnectPtr conn, { virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR); -/* Verify uri was specified */ -if (conn->uri == NULL) { -/* Only hypervisor drivers are permitted to auto-open on NULL uri */ -return VIR_DRV_OPEN_DECLINED; -} else { -if (driver == NULL) { -virReportError(VIR_ERR_INTERNAL_ERROR, "%s", - _("interface state
[libvirt] [PATCH 4/8] driver: allow drivers to indicate if they permit remote connections
Add a localOnly flag to the virConnectDriver struct which allows a driver to indicate whether it is local-only, or permits remote connections. Stateful drivers running inside libvirtd are generally local only. This allows us to remote the check for uri->server != NULL from most drivers. Signed-off-by: Daniel P. Berrangé--- src/bhyve/bhyve_driver.c| 4 +--- src/driver.h| 2 ++ src/interface/interface_backend_netcf.c | 5 + src/interface/interface_backend_udev.c | 5 + src/libvirt.c | 5 + src/libxl/libxl_driver.c| 5 + src/lxc/lxc_driver.c| 5 + src/network/bridge_driver.c | 5 + src/node_device/node_device_driver.c| 4 src/node_device/node_device_hal.c | 1 + src/node_device/node_device_udev.c | 1 + src/nwfilter/nwfilter_driver.c | 5 + src/openvz/openvz_driver.c | 5 + src/qemu/qemu_driver.c | 7 +-- src/secret/secret_driver.c | 5 + src/storage/storage_driver.c| 5 + src/test/test_driver.c | 5 + src/uml/uml_driver.c| 6 +- src/vbox/vbox_common.c | 4 src/vbox/vbox_driver.c | 8 +--- src/vmware/vmware_driver.c | 5 + src/vz/vz_driver.c | 5 + 22 files changed, 29 insertions(+), 73 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index a0bc400480..cc1d4ba6fb 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -205,9 +205,6 @@ bhyveConnectOpen(virConnectPtr conn, if (!conn->uri->scheme || STRNEQ(conn->uri->scheme, "bhyve")) return VIR_DRV_OPEN_DECLINED; - if (conn->uri->server) - return VIR_DRV_OPEN_DECLINED; - if (STRNEQ_NULLABLE(conn->uri->path, "/system")) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Unexpected bhyve URI path '%s', try bhyve:///system"), @@ -1754,6 +1751,7 @@ static virHypervisorDriver bhyveHypervisorDriver = { static virConnectDriver bhyveConnectDriver = { +.localOnly = true, .hypervisorDriver = , }; diff --git a/src/driver.h b/src/driver.h index c86da85481..5fb0b523c8 100644 --- a/src/driver.h +++ b/src/driver.h @@ -79,6 +79,8 @@ typedef struct _virConnectDriver virConnectDriver; typedef virConnectDriver *virConnectDriverPtr; struct _virConnectDriver { +/* Wether driver permits a server in the URI */ +bool localOnly; virHypervisorDriverPtr hypervisorDriver; virInterfaceDriverPtr interfaceDriver; virNetworkDriverPtr networkDriver; diff --git a/src/interface/interface_backend_netcf.c b/src/interface/interface_backend_netcf.c index fb75a33280..3da958980f 100644 --- a/src/interface/interface_backend_netcf.c +++ b/src/interface/interface_backend_netcf.c @@ -167,10 +167,6 @@ netcfConnectOpen(virConnectPtr conn, if (STRNEQ_NULLABLE(conn->uri->scheme, "interface")) return VIR_DRV_OPEN_DECLINED; -/* Leave for remote driver */ -if (conn->uri->server != NULL) -return VIR_DRV_OPEN_DECLINED; - if (driver == NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("interface state driver is not active")); @@ -1224,6 +1220,7 @@ static virHypervisorDriver interfaceHypervisorDriver = { static virConnectDriver interfaceConnectDriver = { +.localOnly = true, .hypervisorDriver = , .interfaceDriver = , }; diff --git a/src/interface/interface_backend_udev.c b/src/interface/interface_backend_udev.c index 47e850bc2a..2b8a9da682 100644 --- a/src/interface/interface_backend_udev.c +++ b/src/interface/interface_backend_udev.c @@ -1211,10 +1211,6 @@ udevConnectOpen(virConnectPtr conn, if (STRNEQ_NULLABLE(conn->uri->scheme, "interface")) return VIR_DRV_OPEN_DECLINED; -/* Leave for remote driver */ -if (conn->uri->server != NULL) -return VIR_DRV_OPEN_DECLINED; - if (driver == NULL) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("interface state driver is not active")); @@ -1295,6 +1291,7 @@ static virHypervisorDriver udevHypervisorDriver = { static virConnectDriver udevConnectDriver = { +.localOnly = true, .hypervisorDriver = , .interfaceDriver = , }; diff --git a/src/libvirt.c b/src/libvirt.c index d87efca625..2b2b3ed425 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -1068,6 +1068,11 @@ virConnectOpenInternal(const char *name, VIR_DEBUG("trying driver %zu (%s) ...", i, virConnectDriverTab[i]->hypervisorDriver->name); +if (virConnectDriverTab[i]->localOnly && ret->uri && ret->uri->server) { +VIR_DEBUG("Server present, skipping local only
[libvirt] [PATCH 2/8] lxc: allow use of lxc:///system URI as preferred format
Historically we have used a bare lxc:/// URI for connecting to LXC. This is different from our practice with QEMU, UML, Parallels, Libxl, BHyve and VirtualBox drivers, which all use a path of '/system' or '/session' or both. By making LXC allow '/system', we have fully standardized on the use of either '/system' or '/session' for all the stateful drivers that run inside libvirtd. Support for lxc:/// is of course maintained for back-compat. Signed-off-by: Daniel P. Berrangé--- docs/drvlxc.html.in | 34 +- examples/lxcconvert/virt-lxc-convert | 2 +- src/lxc/lxc_driver.c | 7 --- src/lxc/lxc_process.c| 4 ++-- tools/libvirt-guests.sysconf | 2 +- tools/virsh.pod | 2 +- tools/virt-login-shell.c | 2 +- 7 files changed, 27 insertions(+), 26 deletions(-) diff --git a/docs/drvlxc.html.in b/docs/drvlxc.html.in index 58a336ed30..44c49609d9 100644 --- a/docs/drvlxc.html.in +++ b/docs/drvlxc.html.in @@ -308,8 +308,8 @@ unit file specifies how systemd will start the libvirt LXC container Description=My little container [Service] -ExecStart=/usr/bin/virsh -c lxc:/// start --pass-fds 3 mycontainer -ExecStop=/usr/bin/virsh -c lxc:/// destroy mycontainer +ExecStart=/usr/bin/virsh -c lxc:///system start --pass-fds 3 mycontainer +ExecStop=/usr/bin/virsh -c lxc:///system destroy mycontainer Type=oneshot RemainAfterExit=yes KillMode=none @@ -621,9 +621,9 @@ The use of namespace passthrough requires libvirt >= 1.2.19 As with any libvirt virtualization driver, LXC containers can be managed via a wide variety of libvirt based tools. At the lowest level the virsh command can be used to perform many -tasks, by passing the -c lxc:/// argument. As an +tasks, by passing the -c lxc:///system argument. As an alternative to repeating the URI with every command, the LIBVIRT_DEFAULT_URI -environment variable can be set to lxc:///. The +environment variable can be set to lxc:///system. The examples that follow outline some common operations with virsh and LXC. For further details about usage of virsh consult its manual page. @@ -637,7 +637,7 @@ document and loads it into libvirt, saving the configuration on disk -# virsh -c lxc:/// define myguest.xml +# virsh -c lxc:///system define myguest.xml Viewing container configuration @@ -652,7 +652,7 @@ using the --inactive flag -# virsh -c lxc:/// dumpxml myguest +# virsh -c lxc:///system dumpxml myguest Starting containers @@ -663,7 +663,7 @@ container from a previously defined persistent configuration -# virsh -c lxc:/// start myguest +# virsh -c lxc:///system start myguest @@ -673,7 +673,7 @@ by libvirt, using the virsh create command. -# virsh -c lxc:/// create myguest.xml +# virsh -c lxc:///system create myguest.xml @@ -689,7 +689,7 @@ to PID 1 inside the container. -# virsh -c lxc:/// shutdown myguest +# virsh -c lxc:///system shutdown myguest @@ -698,7 +698,7 @@ request, it can be forcibly stopped using the virsh destroy -# virsh -c lxc:/// destroy myguest +# virsh -c lxc:///system destroy myguest @@ -714,7 +714,7 @@ to PID 1 inside the container. -# virsh -c lxc:/// reboot myguest +# virsh -c lxc:///system reboot myguest Undefining (deleting) a container configuration @@ -726,7 +726,7 @@ running, this will turn it into a "transient" guest. -# virsh -c lxc:/// undefine myguest +# virsh -c lxc:///system undefine myguest Connecting to a container console @@ -737,7 +737,7 @@ to the text console associated with a container. -# virsh -c lxc:/// console myguest +# virsh -c lxc:///system console myguest @@ -749,7 +749,7 @@ as 'console0', 'console1', 'console2', etc. -# virsh -c lxc:/// console myguest --devname console1 +# virsh -c lxc:///system console myguest --devname console1 Running commands in a container @@ -761,7 +761,7 @@ and then execute an arbitrary command. -# virsh -c lxc:/// lxc-enter-namespace myguest -- /bin/ls -al /dev +# virsh -c lxc:///system lxc-enter-namespace myguest -- /bin/ls -al /dev Monitoring container utilization @@ -773,7 +773,7 @@ host -# virt-top -c lxc:/// +# virt-top -c lxc:///system Converting LXC container configuration @@ -784,7 +784,7 @@ most of the LXC container configuration into a domain XML fragment -# virsh -c lxc:/// domxml-from-native lxc-tools /var/lib/lxc/myguest/config +# virsh -c lxc:///system domxml-from-native lxc-tools /var/lib/lxc/myguest/config diff --git a/examples/lxcconvert/virt-lxc-convert b/examples/lxcconvert/virt-lxc-convert index e62172eea4..5260eb708f 100644 --- a/examples/lxcconvert/virt-lxc-convert +++ b/examples/lxcconvert/virt-lxc-convert @@ -123,5 +123,5 @@ if test -z "$mem_limit"; then echo "lxc.cgroup.memory.limit_in_bytes = $memory" >> "$conf_new" fi -virsh -c lxc:/// domxml-from-native
[libvirt] [PATCH 3/8] driver: introduce a driver method for probing default URIs
Currently the virDrvConnectOpen method is supposed to handle both opening an explicit URI and auto-probing a driver if no URI is given. Introduce a dedicated virDrvConnectURIProbe method to enable the probing functionality to be split from the driver opening functionality. It is still possible for NULL to be passed to the virDrvConnectOpen method after this change, because the remote driver needs special handling to enable probing of the URI against a remote libvirtd daemon. Signed-off-by: Daniel P. Berrangé--- docs/hvsupport.pl | 6 +++--- src/bhyve/bhyve_driver.c | 18 +- src/driver-hypervisor.h| 4 src/libvirt.c | 13 + src/libxl/libxl_driver.c | 17 - src/lxc/lxc_driver.c | 17 - src/openvz/openvz_driver.c | 24 src/qemu/qemu_driver.c | 30 +- src/uml/uml_driver.c | 20 +--- src/vbox/vbox_common.c | 13 ++--- 10 files changed, 117 insertions(+), 45 deletions(-) diff --git a/docs/hvsupport.pl b/docs/hvsupport.pl index fc6eb1f152..a2b980c502 100755 --- a/docs/hvsupport.pl +++ b/docs/hvsupport.pl @@ -184,7 +184,7 @@ foreach my $drivertable (@drivertable) { my $api; if (exists $apis{"vir$name"}) { $api = "vir$name"; -} elsif ($name =~ /\w+(Open|Close)/) { +} elsif ($name =~ /\w+(Open|Close|URIProbe)/) { next; } else { die "driver $name does not have a public API"; @@ -241,12 +241,12 @@ foreach my $src (@srcs) { next if $api eq "no" || $api eq "name"; -die "Method $meth in $src is missing version" unless defined $vers; +die "Method $meth in $src is missing version" unless defined $vers || $api eq "connectURIProbe"; die "Driver method for $api is NULL in $src" if $meth eq "NULL"; if (!exists($groups{$ingrp}->{apis}->{$api})) { -next if $api =~ /\w(Open|Close)/; +next if $api =~ /\w(Open|Close|URIProbe)/; die "Found unexpected method $api in $ingrp\n"; } diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 849d3abcd3..a0bc400480 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -180,6 +180,17 @@ bhyveDomObjFromDomain(virDomainPtr domain) return vm; } + +static int +bhyveConnectURIProbe(char **uri) +{ +if (bhyve_driver == NULL) +return 0; + +return VIR_STRDUP(*uri, "bhyve:///system"); +} + + static virDrvOpenStatus bhyveConnectOpen(virConnectPtr conn, virConnectAuthPtr auth ATTRIBUTE_UNUSED, @@ -189,11 +200,7 @@ bhyveConnectOpen(virConnectPtr conn, virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR); if (conn->uri == NULL) { - if (bhyve_driver == NULL) - return VIR_DRV_OPEN_DECLINED; - - if (!(conn->uri = virURIParse("bhyve:///system"))) - return VIR_DRV_OPEN_ERROR; + return VIR_DRV_OPEN_DECLINED; } else { if (!conn->uri->scheme || STRNEQ(conn->uri->scheme, "bhyve")) return VIR_DRV_OPEN_DECLINED; @@ -1689,6 +1696,7 @@ bhyveConnectGetDomainCapabilities(virConnectPtr conn, static virHypervisorDriver bhyveHypervisorDriver = { .name = "bhyve", +.connectURIProbe = bhyveConnectURIProbe, .connectOpen = bhyveConnectOpen, /* 1.2.2 */ .connectClose = bhyveConnectClose, /* 1.2.2 */ .connectGetVersion = bhyveConnectGetVersion, /* 1.2.2 */ diff --git a/src/driver-hypervisor.h b/src/driver-hypervisor.h index ce0e2b2525..e71a72a441 100644 --- a/src/driver-hypervisor.h +++ b/src/driver-hypervisor.h @@ -25,6 +25,9 @@ # error "Don't include this file directly, only use driver.h" # endif +typedef int +(*virDrvConnectURIProbe)(char **uri); + typedef virDrvOpenStatus (*virDrvConnectOpen)(virConnectPtr conn, virConnectAuthPtr auth, @@ -1300,6 +1303,7 @@ typedef virHypervisorDriver *virHypervisorDriverPtr; */ struct _virHypervisorDriver { const char *name; /* the name of the driver */ +virDrvConnectURIProbe connectURIProbe; virDrvConnectOpen connectOpen; virDrvConnectClose connectClose; virDrvConnectSupportsFeature connectSupportsFeature; diff --git a/src/libvirt.c b/src/libvirt.c index 51acbbf83e..d87efca625 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -975,6 +975,19 @@ virConnectOpenInternal(const char *name, } else { if (virConnectGetDefaultURI(conf, ) < 0) goto failed; + +if (uristr == NULL) { +VIR_DEBUG("Trying to probe for default URI"); +for (i = 0; i < virConnectDriverTabCount && uristr == NULL; i++) { +if
[libvirt] [PATCH 8/8] driver: ensure URI path is non-NULL to simplify drivers
Avoid the need for the drivers to explicitly check for a NULL path by making sure it is at least the empty string. Signed-off-by: Daniel P. Berrangé--- src/bhyve/bhyve_driver.c | 2 +- src/esx/esx_driver.c | 2 +- src/libvirt.c | 8 +++- src/libxl/libxl_driver.c | 5 ++--- src/lxc/lxc_driver.c | 3 +-- src/openvz/openvz_driver.c | 3 +-- src/phyp/phyp_driver.c | 2 +- src/qemu/qemu_driver.c | 6 -- src/test/test_driver.c | 5 ++--- src/vbox/vbox_common.c | 6 -- src/vbox/vbox_driver.c | 6 -- src/vmware/vmware_driver.c | 2 +- src/vz/vz_driver.c | 2 +- 13 files changed, 18 insertions(+), 34 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 7d6439d79d..8870756ac5 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -199,7 +199,7 @@ bhyveConnectOpen(virConnectPtr conn, { virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR); - if (STRNEQ_NULLABLE(conn->uri->path, "/system")) { + if (STRNEQ(conn->uri->path, "/system")) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Unexpected bhyve URI path '%s', try bhyve:///system"), conn->uri->path); diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index 335d9a970d..c682c800ca 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -852,7 +852,7 @@ esxConnectOpen(virConnectPtr conn, virConnectAuthPtr auth, virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR); if (STRCASENEQ(conn->uri->scheme, "vpx") && -conn->uri->path && STRNEQ(conn->uri->path, "/")) { +STRNEQ(conn->uri->path, "/")) { VIR_WARN("Ignoring unexpected path '%s' for non-vpx scheme '%s'", conn->uri->path, conn->uri->scheme); } diff --git a/src/libvirt.c b/src/libvirt.c index 600beaa4d5..0b6bde 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -1007,6 +1007,12 @@ virConnectOpenInternal(const char *name, goto failed; } +/* Avoid need for drivers to worry about NULLs, as + * no one needs to distinguish "" vs NULL */ +if (ret->uri->path == NULL && +VIR_STRDUP(ret->uri->path, "") < 0) +goto failed; + VIR_DEBUG("Split \"%s\" to URI components:\n" " scheme %s\n" " server %s\n" @@ -1016,7 +1022,7 @@ virConnectOpenInternal(const char *name, uristr, NULLSTR(ret->uri->scheme), NULLSTR(ret->uri->server), NULLSTR(ret->uri->user), ret->uri->port, - NULLSTR(ret->uri->path)); + ret->uri->path); if (ret->uri->scheme == NULL) { virReportError(VIR_ERR_NO_CONNECT, diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 45d0c99902..8808da8db1 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -853,13 +853,12 @@ libxlConnectOpen(virConnectPtr conn, } /* /session isn't supported in libxenlight */ -if (conn->uri->path && -STRNEQ(conn->uri->path, "") && +if (STRNEQ(conn->uri->path, "") && STRNEQ(conn->uri->path, "/") && STRNEQ(conn->uri->path, "/system")) { virReportError(VIR_ERR_INTERNAL_ERROR, _("unexpected Xen URI path '%s', try xen:///system"), - NULLSTR(conn->uri->path)); + conn->uri->path); return VIR_DRV_OPEN_ERROR; } diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 2079dd0704..f6041aab43 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -170,8 +170,7 @@ static virDrvOpenStatus lxcConnectOpen(virConnectPtr conn, virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR); /* If path isn't '/' then they typoed, tell them correct path */ -if (conn->uri->path != NULL && -STRNEQ(conn->uri->path, "/") && +if (STRNEQ(conn->uri->path, "/") && STRNEQ(conn->uri->path, "/system")) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Unexpected LXC URI path '%s', try lxc:///system"), diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c index 33893ac009..5a1446ddda 100644 --- a/src/openvz/openvz_driver.c +++ b/src/openvz/openvz_driver.c @@ -1444,8 +1444,7 @@ static virDrvOpenStatus openvzConnectOpen(virConnectPtr conn, virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR); /* If path isn't /system, then they typoed, so tell them correct path */ -if (conn->uri->path == NULL || -STRNEQ(conn->uri->path, "/system")) { +if (STRNEQ(conn->uri->path, "/system")) { virReportError(VIR_ERR_INTERNAL_ERROR, _("unexpected OpenVZ URI path '%s', try openvz:///system"), conn->uri->path); diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c index 55d459df5c..ed3d9feb58 100644
[libvirt] [PATCH 0/8] Simplify & standarize more parts of driver URI handling
The motivating goal of this series was/is to make it possible to answer whether there is any driver registered to handle a given URI scheme without having to call into the drivers. Ultimately this ended up being a nice simplification and cleanup of driver URI opening code, removing repetative logic from all drivers. Daniel P. Berrangé (8): xen: encourage use of xen:///system URI as preferred format lxc: allow use of lxc:///system URI as preferred format driver: introduce a driver method for probing default URIs driver: allow drivers to indicate if they permit remote connections driver: declare supported URI schemes in virConnectDriver struct driver: ensure NULL URI isn't passed to drivers with whitelisted URIs driver: enforce a non-NULL URI scheme driver: ensure URI path is non-NULL to simplify drivers docs/drvlxc.html.in | 34 ++--- docs/drvxen.html.in | 14 +++--- docs/hvsupport.pl | 6 +-- docs/remote.html.in | 6 +-- docs/uri.html.in| 16 +++ examples/lxcconvert/virt-lxc-convert| 2 +- src/bhyve/bhyve_driver.c| 48 +-- src/driver-hypervisor.h | 4 ++ src/driver.h| 8 src/esx/esx_driver.c| 31 +--- src/hyperv/hyperv_driver.c | 24 +- src/interface/interface_backend_netcf.c | 47 +++--- src/interface/interface_backend_udev.c | 47 +++--- src/libvirt.c | 69 +++--- src/libxl/libxl_driver.c| 58 +++--- src/lxc/lxc_driver.c| 56 ++ src/lxc/lxc_process.c | 4 +- src/network/bridge_driver.c | 47 +++--- src/node_device/node_device_driver.c| 45 +++-- src/node_device/node_device_hal.c | 2 + src/node_device/node_device_udev.c | 2 + src/nwfilter/nwfilter_driver.c | 35 +- src/openvz/openvz_driver.c | 70 +-- src/phyp/phyp_driver.c | 9 +--- src/qemu/qemu_driver.c | 85 +++-- src/remote/remote_driver.c | 74 +--- src/secret/secret_driver.c | 47 +++--- src/storage/storage_driver.c| 47 +++--- src/test/test_driver.c | 18 ++- src/uml/uml_driver.c| 71 +-- src/vbox/vbox_common.c | 26 -- src/vbox/vbox_driver.c | 18 ++- src/vmware/vmware_driver.c | 29 --- src/vz/vz_driver.c | 25 ++ src/xenapi/xenapi_driver.c | 6 +-- tools/libvirt-guests.sysconf| 2 +- tools/virsh.pod | 4 +- tools/virt-login-shell.c| 2 +- 38 files changed, 489 insertions(+), 649 deletions(-) -- 2.14.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [PATCH 5/8] driver: declare supported URI schemes in virConnectDriver struct
Declare what URI schemes a driver supports in its virConnectDriver struct. This allows us to skip trying to open the driver entirely if the URI scheme doesn't match. Signed-off-by: Daniel P. Berrangé--- src/bhyve/bhyve_driver.c| 4 +--- src/driver.h| 6 ++ src/esx/esx_driver.c| 27 ++- src/hyperv/hyperv_driver.c | 22 ++ src/interface/interface_backend_netcf.c | 4 +--- src/interface/interface_backend_udev.c | 4 +--- src/libvirt.c | 24 src/libxl/libxl_driver.c| 5 + src/lxc/lxc_driver.c| 5 + src/network/bridge_driver.c | 4 +--- src/node_device/node_device_driver.c| 3 --- src/node_device/node_device_hal.c | 1 + src/node_device/node_device_udev.c | 1 + src/nwfilter/nwfilter_driver.c | 4 +--- src/openvz/openvz_driver.c | 6 +- src/phyp/phyp_driver.c | 4 +--- src/qemu/qemu_driver.c | 8 +--- src/secret/secret_driver.c | 4 +--- src/storage/storage_driver.c| 4 +--- src/test/test_driver.c | 4 +--- src/uml/uml_driver.c| 5 + src/vbox/vbox_common.c | 4 src/vbox/vbox_driver.c | 5 ++--- src/vmware/vmware_driver.c | 7 +-- src/vz/vz_driver.c | 15 ++- src/xenapi/xenapi_driver.c | 5 ++--- 26 files changed, 57 insertions(+), 128 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index cc1d4ba6fb..21754dfc10 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -202,9 +202,6 @@ bhyveConnectOpen(virConnectPtr conn, if (conn->uri == NULL) { return VIR_DRV_OPEN_DECLINED; } else { - if (!conn->uri->scheme || STRNEQ(conn->uri->scheme, "bhyve")) - return VIR_DRV_OPEN_DECLINED; - if (STRNEQ_NULLABLE(conn->uri->path, "/system")) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Unexpected bhyve URI path '%s', try bhyve:///system"), @@ -1752,6 +1749,7 @@ static virHypervisorDriver bhyveHypervisorDriver = { static virConnectDriver bhyveConnectDriver = { .localOnly = true, +.uriSchemes = (const char *[]){ "bhyve", NULL }, .hypervisorDriver = , }; diff --git a/src/driver.h b/src/driver.h index 5fb0b523c8..b071a3a782 100644 --- a/src/driver.h +++ b/src/driver.h @@ -81,6 +81,12 @@ typedef virConnectDriver *virConnectDriverPtr; struct _virConnectDriver { /* Wether driver permits a server in the URI */ bool localOnly; +/* + * NULL terminated list of supported URI schemes. + * - Single element { NULL } list indicates no supported schemes + * - NULL list indicates wildcard supportnig all schemes + */ +const char **uriSchemes; virHypervisorDriverPtr hypervisorDriver; virInterfaceDriverPtr interfaceDriver; virNetworkDriverPtr networkDriver; diff --git a/src/esx/esx_driver.c b/src/esx/esx_driver.c index 927267f1cc..9b6944ba59 100644 --- a/src/esx/esx_driver.c +++ b/src/esx/esx_driver.c @@ -845,7 +845,6 @@ esxConnectOpen(virConnectPtr conn, virConnectAuthPtr auth, unsigned int flags) { virDrvOpenStatus result = VIR_DRV_OPEN_ERROR; -char *plus; esxPrivate *priv = NULL; char *potentialVCenterIPAddress = NULL; char vCenterIPAddress[NI_MAXHOST] = ""; @@ -853,32 +852,9 @@ esxConnectOpen(virConnectPtr conn, virConnectAuthPtr auth, virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR); /* Decline if the URI is NULL or the scheme is NULL */ -if (!conn->uri || !conn->uri->scheme) +if (!conn->uri) return VIR_DRV_OPEN_DECLINED; -/* Decline if the scheme is not one of {vpx|esx|gsx} */ -plus = strchr(conn->uri->scheme, '+'); - -if (!plus) { -if (STRCASENEQ(conn->uri->scheme, "vpx") && -STRCASENEQ(conn->uri->scheme, "esx") && -STRCASENEQ(conn->uri->scheme, "gsx")) { -return VIR_DRV_OPEN_DECLINED; -} -} else { -if (plus - conn->uri->scheme != 3 || -(STRCASENEQLEN(conn->uri->scheme, "vpx", 3) && - STRCASENEQLEN(conn->uri->scheme, "esx", 3) && - STRCASENEQLEN(conn->uri->scheme, "gsx", 3))) { -return VIR_DRV_OPEN_DECLINED; -} - -virReportError(VIR_ERR_INVALID_ARG, - _("Transport '%s' in URI scheme is not supported, try again " - "without the transport part"), plus + 1); -return VIR_DRV_OPEN_ERROR; -} - if (STRCASENEQ(conn->uri->scheme, "vpx") && conn->uri->path && STRNEQ(conn->uri->path, "/")) { VIR_WARN("Ignoring unexpected path '%s' for
Re: [libvirt] [dbus PATCH] APIs should appear in aplhabetical order in all files.
On Mon, Apr 09, 2018 at 05:10:48PM +0200, Katerina Koukiou wrote: > In C and XML files the order is: > 1) properties > 2) methods > 3) signals > All of them sorted in their category alphabetically. > > Signed-off-by: Katerina Koukiou> --- > data/org.libvirt.Connect.xml | 12 +-- > data/org.libvirt.Domain.xml | 54 ++-- > src/connect.c| 2 +- > src/domain.c | 200 > +-- > 4 files changed, 134 insertions(+), 134 deletions(-) I would split it into two patches, one per each file to make the diff less crazy. I'm also considering to split it per every property/method move to make the diff clean and obvious that it's a simple move. It's easy to miss something. > diff --git a/data/org.libvirt.Connect.xml b/data/org.libvirt.Connect.xml > index 5b49ed9..55260cc 100644 > --- a/data/org.libvirt.Connect.xml > +++ b/data/org.libvirt.Connect.xml > @@ -25,12 +25,6 @@ > value="See > https://libvirt.org/html/libvirt-libvirt-host.html#virConnectGetVersion"/> > > - > - -value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectListAllDomains"/> > - > - > - > > value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainCreateXML"/> > @@ -73,6 +67,12 @@ > > > > + > + +value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectListAllDomains"/> > + > + > + > > value="See > https://libvirt.org/html/libvirt-libvirt-network.html#virConnectListAllNetworks"/> > diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml > index 7679018..78378bb 100644 > --- a/data/org.libvirt.Domain.xml > +++ b/data/org.libvirt.Domain.xml > @@ -3,25 +3,25 @@ > > > > - > + > -value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetName"/> > +value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainIsActive"/> > > - > + > -value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetUUIDString"/> > +value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetAutostart"/> > > > value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetID"/> > > - > + > -value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetOSType"/> > +value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetName"/> > > - > + > -value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainIsActive"/> > +value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetOSType"/> > > > @@ -31,21 +31,19 @@ > value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetState"/> > > - > + > -value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetAutostart"/> > +value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetUUIDString"/> > > - > + > -value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetVcpusFlags"/> > +value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainCreateWithFlags"/> > > - > > - > + > -value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetXMLDesc"/> > +value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDestroyFlags"/> > > - > > > @@ -54,15 +52,17 @@ > > > > - > + > -value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainShutdownFlags"/> > +value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetVcpusFlags"/> > > + > > - > + > -value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDestroyFlags"/> > +value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetXMLDesc"/> > > + > > > @@ -74,23 +74,23 @@ > value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainReset"/> > > > - > + > -value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainCreateWithFlags"/> > - > +value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainResume"/> > > - > + > -value="See > https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainUndefineFlags"/> > +value="See >
[libvirt] [PATCH 1/8] xen: encourage use of xen:///system URI as preferred format
Historically we have used a bare xen:/// URI for connecting to the legacy Xen driver. The new libxl Xen driver follows the new practice of allowing '/system' as a path, as well as bare '/' for compat with the old Xen driver. This documents xen:///system as the preferred format for Xen, leaving xen:/// as an undocumented feature just for back-compat. Signed-off-by: Daniel P. Berrangé--- docs/drvxen.html.in | 14 +++--- docs/remote.html.in | 6 +++--- docs/uri.html.in | 16 src/libvirt.c| 8 src/libxl/libxl_driver.c | 4 ++-- tools/libvirt-guests.sysconf | 2 +- tools/virsh.pod | 2 +- 7 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/drvxen.html.in b/docs/drvxen.html.in index b8d190c942..2e45e09527 100644 --- a/docs/drvxen.html.in +++ b/docs/drvxen.html.in @@ -43,11 +43,11 @@ -xen:///(local access, direct) -xen+unix:/// (local access, via daemon) -xen://example.com/ (remote access, TLS/x509) -xen+tcp://example.com/ (remote access, SASl/Kerberos) -xen+ssh://r...@example.com/(remote access, SSH tunnelled) +xen:///system (local access, direct) +xen+unix:///system(local access, via daemon) +xen://example.com/system (remote access, TLS/x509) +xen+tcp://example.com/system (remote access, SASl/Kerberos) +xen+ssh://r...@example.com/system (remote access, SSH tunnelled) Import and export of libvirt domain XML configs @@ -76,7 +76,7 @@ xen+ssh://r...@example.com/(remote access, SSH tunnelled) which can then be used by libvirt. -$ virsh -c xen:/// domxml-from-native xen-xm rhel5.cfg +$ virsh -c xen:///system domxml-from-native xen-xm rhel5.cfg domain type='xen' namerhel5pv/name uuid8f07fe28-753f-2729-d76d-bdbd892f949a/uuid @@ -122,7 +122,7 @@ xen+ssh://r...@example.com/(remote access, SSH tunnelled) format. -$ virsh -c xen:/// domxml-to-native xen-xm rhel5pv.xml +$ virsh -c xen:///system domxml-to-native xen-xm rhel5pv.xml name = "rhel5pv" uuid = "8f07fe28-753f-2729-d76d-bdbd892f949a" maxmem = 2500 diff --git a/docs/remote.html.in b/docs/remote.html.in index 8c22778f53..de09975039 100644 --- a/docs/remote.html.in +++ b/docs/remote.html.in @@ -130,14 +130,14 @@ to distinguish this from a local URI. Some examples: - xen+ssh://rjones@towada/ Connect to a + xen+ssh://rjones@towada/system Connect to a remote Xen hypervisor on host towada using ssh transport and ssh username rjones. - xen://towada/ Connect to a + xen://towada/system Connect to a remote Xen hypervisor on host towada using TLS. - xen://towada/?no_verify=1 Connect to a + xen://towada/system?no_verify=1 Connect to a remote Xen hypervisor on host towada using TLS. Do not verify the server's certificate. diff --git a/docs/uri.html.in b/docs/uri.html.in index 5df73613ae..6da9eb9746 100644 --- a/docs/uri.html.in +++ b/docs/uri.html.in @@ -107,7 +107,7 @@ In virt-install use the --connect=URI option: virt-install --connect=test:///default [other options] - xen:/// URI + xen:///system URI This section describes a feature which is new in libvirt @@ -115,7 +115,7 @@ virt-install --connect=test:///default [other options] To access a Xen hypervisor running on the local machine -use the URI xen:///. +use the URI xen:///system. qemu:///... QEMU and KVM URIs @@ -167,10 +167,10 @@ a NULL URI for a local connection. For example: - xen:/// + xen:///system - xen://oirase/ + xen://oirase/system Connect to the Xen hypervisor running on host oirase using TLS. @@ -187,10 +187,10 @@ a NULL URI for a local connection. For example: - xen:/// + xen:///system - xen+ssh://oirase/ + xen+ssh://oirase/system Connect to the Xen hypervisor running on host oirase by going over an ssh connection. @@ -251,7 +251,7 @@ In any case applications linked to libvirt can continue to pass user to override the URI, either by constructing one or by allowing the user to type a URI in directly (if that is appropriate). If your application wishes to connect specifically to a Xen hypervisor, then -for future proofing it should choose a full xen:/// URI. +for future proofing it should choose a full xen:///system URI. Legacy: "xen" @@ -259,7 +259,7 @@ for future proofing it should choose a full xen:/// Another legacy URI is to specify name as the string "xen". This will continue to refer to the Xen -hypervisor. However you should prefer a full xen:/// URI in all future code. +hypervisor. However you should
Re: [libvirt] [libvirt PATCH v2 03/44] Force QMP capability probing
On Thu, Apr 05, 2018 at 02:22:54PM +0200, Ján Tomko wrote: > Remove the qmpOnly attribute of virQEMUCapsNewForBinaryInternal > and instead always assume it's true. > > This effectively sets the minimum QEMU version to 1.2.0, > breaking support for QEMU in RHEL6. > > @@ -5077,8 +4225,7 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch, > uid_t runUid, > gid_t runGid, > unsigned int microcodeVersion, > -const char *kernelVersion, > -bool qmpOnly) > +const char *kernelVersion) > { > virQEMUCapsPtr qemuCaps; > struct stat sb; > @@ -5114,7 +4261,7 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch, > goto error; > } > > -if (qmpOnly && !qemuCaps->usedQMP) { > +if (!qemuCaps->usedQMP) { > virReportError(VIR_ERR_INTERNAL_ERROR, > _("Failed to probe QEMU binary with QMP: %s"), > qmperr ? qmperr : _("unknown error")); We should be able to kill this now. We only have "usedQMP" because we want to gracefully get out of virQEMUCapsInitQMPCommandRun() when launching with QMP fails. We can make that method return -1 or 0 only now, and drop "usedQMP" Regards, Daniel -- |: https://berrange.com -o-https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o-https://fstop138.berrange.com :| |: https://entangle-photo.org-o-https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [libvirt PATCH v2 40/44] Deprecate QEMU_CAPS_DUMP_GUEST_CORE
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c | 19 +-- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml| 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml| 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvdata/aarch64-aavmf-virtio-mmio.args | 2 +- tests/qemuxml2argvdata/aarch64-acpi-uefi.args | 2 +- [ ... etc ... ] tests/qemuxml2argvdata/watchdog.args | 2 +- tests/qemuxml2argvdata/x86-kvm-32-on-64.args | 2 +- tests/qemuxml2argvtest.c | 11 +++ 632 files changed, 612 insertions(+), 652 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 6af3cc9d61..c46e99362d 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3629,7 +3629,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_DUMP_GUEST_CORE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNC_SHARE_POLICY); virQEMUCapsSet(qemuCaps, QEMU_CAPS_HOST_PCI_MULTIDOMAIN); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DISPLAY); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index f1a55c421d..743f37aca3 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -203,7 +203,7 @@ typedef enum { /* 110 */ QEMU_CAPS_REBOOT_TIMEOUT, /* -boot reboot-timeout */ -QEMU_CAPS_DUMP_GUEST_CORE, /* dump-guest-core-parameter */ +X_QEMU_CAPS_DUMP_GUEST_CORE, /* dump-guest-core-parameter */ QEMU_CAPS_SEAMLESS_MIGRATION, /* seamless-migration for SPICE */ QEMU_CAPS_BLOCK_COMMIT, /* block-commit */ QEMU_CAPS_VNC, /* Is -vnc available? */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index e6c70f84bf..5bd129c72a 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7050,21 +7050,12 @@ qemuBuildMachineCommandLine(virCommandPtr cmd, virTristateSwitchTypeToString(smm)); } -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DUMP_GUEST_CORE)) { -if (def->mem.dump_core) { -virBufferAsprintf(, ",dump-guest-core=%s", - virTristateSwitchTypeToString(def->mem.dump_core)); -} else { -virBufferAsprintf(, ",dump-guest-core=%s", - cfg->dumpGuestCore ? "on" : "off"); -} +if (def->mem.dump_core) { +virBufferAsprintf(, ",dump-guest-core=%s", + virTristateSwitchTypeToString(def->mem.dump_core)); } else { -if (def->mem.dump_core) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("dump-guest-core is not available " - "with this QEMU binary")); -goto cleanup; -} +virBufferAsprintf(, ",dump-guest-core=%s", + cfg->dumpGuestCore ? "on" : "off"); } if (def->mem.nosharepages) { diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index efe137cb11..779f5032b1 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -48,7 +48,6 @@ - diff --git
Re: [libvirt] [libvirt PATCH v2 14/44] Deprecate QEMU_CAPS_SDL
On Mon, Apr 09, 2018 at 05:20:07PM +0200, Ján Tomko wrote: > Implied by QEMU >= 1.2.0. > > Signed-off-by: Ján Tomko> --- > src/qemu/qemu_capabilities.c | 4 +--- > src/qemu/qemu_capabilities.h | 2 +- > src/qemu/qemu_command.c| 9 + > tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - > tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - > tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - > tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - > tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - > tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - > tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - > tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - > tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - > tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - > tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - > tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - > tests/qemuxml2argvtest.c | 4 ++-- > 29 files changed, 5 insertions(+), 39 deletions(-) > > diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c > index b4ead4aeff..63eb1a5768 100644 > --- a/src/qemu/qemu_capabilities.c > +++ b/src/qemu/qemu_capabilities.c > @@ -3635,7 +3635,6 @@ static qemuMonitorCallbacks callbacks = { > static void > virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) > { > -virQEMUCapsSet(qemuCaps, QEMU_CAPS_SDL); > virQEMUCapsSet(qemuCaps, QEMU_CAPS_RTC); > virQEMUCapsSet(qemuCaps, QEMU_CAPS_VHOST_NET); > virQEMUCapsSet(qemuCaps, QEMU_CAPS_NODEFCONFIG); > @@ -4693,8 +4692,7 @@ virQEMUCapsFillDomainDeviceGraphicsCaps(virQEMUCapsPtr > qemuCaps, > { > dev->supported = true; > > -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SDL)) > -VIR_DOMAIN_CAPS_ENUM_SET(dev->type, VIR_DOMAIN_GRAPHICS_TYPE_SDL); > +VIR_DOMAIN_CAPS_ENUM_SET(dev->type, VIR_DOMAIN_GRAPHICS_TYPE_SDL); > if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC)) > VIR_DOMAIN_CAPS_ENUM_SET(dev->type, VIR_DOMAIN_GRAPHICS_TYPE_VNC); > if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SPICE)) > diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h > index 9d0b6878b7..71bea5a623 100644 > --- a/src/qemu/qemu_capabilities.h > +++ b/src/qemu/qemu_capabilities.h > @@ -85,7 +85,7 @@ typedef enum { > /* 25 */ > X_QEMU_CAPS_BALLOON, /* -balloon available */ > X_QEMU_CAPS_DEVICE, /* Is the -device arg available */ > -QEMU_CAPS_SDL, /* Is the new -sdl arg available */ > +X_QEMU_CAPS_SDL, /* Is the new -sdl arg available */ Hmm, even if -sdl is available, QEMU might have been built without SDL support. I wonder if there is any way we can probe to see if SDL is truely available > X_QEMU_CAPS_SMP_TOPOLOGY, /* -smp has sockets/cores/threads */ > X_QEMU_CAPS_NETDEV, /* -netdev flag & netdev_add/remove */ > > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c > index 422f8f2546..6851bd7bcf 100644 > --- a/src/qemu/qemu_command.c > +++ b/src/qemu/qemu_command.c > @@ -8134,18 +8134,11 @@ > qemuBuildGraphicsSPICECommandLine(virQEMUDriverConfigPtr cfg, > static int > qemuBuildGraphicsCommandLine(virQEMUDriverConfigPtr cfg, > virCommandPtr cmd, > - virDomainDefPtr def, > virQEMUCapsPtr qemuCaps, > virDomainGraphicsDefPtr graphics) > { > switch (graphics->type) { > case VIR_DOMAIN_GRAPHICS_TYPE_SDL: > -if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SDL)) { > -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, > - _("sdl not supported by '%s'"), def->emulator); > -return -1; > -} ...as this is potentially still relevant if built without SDL Regards, Daniel -- |: https://berrange.com -o-https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o-https://fstop138.berrange.com :| |: https://entangle-photo.org-o-https://www.instagram.com/dberrange :| -- libvir-list mailing
Re: [libvirt] [RFC] Defining firmware (OVMF, et al) metadata format & file
On 04/09/18 11:02, Kashyap Chamarthy wrote: > - It also provides a persistent command history in a convenient file: > '~/.qmp-shell_history' I noticed it used readline, but I didn't know about the dedicated history file. Nice! Thanks! Laszlo -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [libvirt PATCH v2 03/44] Force QMP capability probing
On Thu, 2018-04-05 at 14:22 +0200, Ján Tomko wrote: > Remove the qmpOnly attribute of virQEMUCapsNewForBinaryInternal s/attribute/argument/ > and instead always assume it's true. > > This effectively sets the minimum QEMU version to 1.2.0, > breaking support for QEMU in RHEL6. I don't think we need to single out RHEL6 here, mentioning the QEMU version is enough. In other words, just drop the second line. > cfg.mk| 2 +- > src/qemu/qemu_capabilities.c | 866 > +- > src/qemu/qemu_capspriv.h | 17 +- > tests/Makefile.am | 8 +- > tests/qemucapsprobe.c | 2 +- > tests/qemuhelpdata/qemu-0.12.1| 198 --- > tests/qemuhelpdata/qemu-0.12.1-device | 62 --- > tests/qemuhelpdata/qemu-1.0 | 253 - > tests/qemuhelpdata/qemu-1.0-device| 148 - > tests/qemuhelpdata/qemu-1.1.0 | 269 -- > tests/qemuhelpdata/qemu-1.1.0-device | 170 -- > tests/qemuhelpdata/qemu-1.2.0 | 272 -- > tests/qemuhelpdata/qemu-kvm-0.12.3| 215 > tests/qemuhelpdata/qemu-kvm-0.12.3-device | 63 --- > tests/qemuhelpdata/qemu-kvm-0.13.0| 242 - > tests/qemuhelpdata/qemu-kvm-0.13.0-device | 90 > tests/qemuhelpdata/qemu-kvm-1.2.0 | 277 -- > tests/qemuhelptest.c | 437 --- > 18 files changed, 8 insertions(+), 3583 deletions(-) Good riddance o/ > diff --git a/cfg.mk b/cfg.mk > index 4aa26d434a..980f34bb7d 100644 > --- a/cfg.mk > +++ b/cfg.mk > @@ -1225,7 +1225,7 @@ exclude_file_name_regexp--sc_require_config_h_first = \ > ^(examples/|tools/virsh-edit\.c$$) > > exclude_file_name_regexp--sc_trailing_blank = \ > - > /qemuhelpdata/|/sysinfodata/.*\.data|/virhostcpudata/.*\.cpuinfo|^gnulib/local/.*/.*diff$$ > + /sysinfodata/.*\.data|/virhostcpudata/.*\.cpuinfo|^gnulib/local/.*/.*diff$$ > > exclude_file_name_regexp--sc_unmarked_diagnostics = \ >^(docs/apibuild.py|tests/virt-aa-helper-test|docs/js/.*\.js)$$ You missed exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \ (^tests/(qemuhelp|virhostcpu|virpcitest)data/|docs/js/.*\.js|docs/fonts/.*\.woff|\.diff|tests/virconfdata/no-newline\.conf$$) With that taken care of and the commit message fixed, Reviewed-by: Andrea Bolognani-- Andrea Bolognani / Red Hat / Virtualization -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [libvirt PATCH v2 44/44] Deprecate QEMU_CAPS_MACHINE_USB_OPT
Implied by QEMU >= 1.3.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 4 src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c | 3 +-- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml| 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml| 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvdata/aarch64-aavmf-virtio-mmio.args | 2 +- tests/qemuxml2argvdata/aarch64-acpi-uefi.args | 2 +- [ ... ] tests/qemuxml2argvdata/watchdog-injectnmi.args| 2 +- tests/qemuxml2argvdata/watchdog.args | 2 +- tests/qemuxml2argvdata/x86-kvm-32-on-64.args | 2 +- tests/qemuxml2argvtest.c | 3 +-- 634 files changed, 613 insertions(+), 639 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 59456b2d5d..721b1361c1 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3757,10 +3757,6 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps, virQEMUCapsInitQMPBasicArch(qemuCaps); -/* USB option is supported v1.3.0 onwards */ -if (qemuCaps->version >= 1003000) -virQEMUCapsSet(qemuCaps, QEMU_CAPS_MACHINE_USB_OPT); - /* WebSockets were introduced between 1.3.0 and 1.3.1 */ if (qemuCaps->version >= 1003001) virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNC_WEBSOCKET); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 594cc19213..9476985b11 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -239,7 +239,7 @@ typedef enum { /* 135 */ X_QEMU_CAPS_IPV6_MIGRATION, /* -incoming [::] */ X_QEMU_CAPS_MACHINE_OPT, /* -machine */ -QEMU_CAPS_MACHINE_USB_OPT, /* -machine xxx,usb=on/off */ +X_QEMU_CAPS_MACHINE_USB_OPT, /* -machine xxx,usb=on/off */ QEMU_CAPS_DEVICE_TPM_PASSTHROUGH, /* -tpmdev passthrough */ QEMU_CAPS_DEVICE_TPM_TIS, /* -device tpm_tis */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 7061089b03..4775d06121 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7016,8 +7016,7 @@ qemuBuildMachineCommandLine(virCommandPtr cmd, /* To avoid the collision of creating USB controllers when calling * machine->init in QEMU, it needs to set usb=off */ -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_MACHINE_USB_OPT)) -virBufferAddLit(, ",usb=off"); +virBufferAddLit(, ",usb=off"); if (vmport) { if (!virQEMUCapsSupportsVmport(qemuCaps, def)) { diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index f49df85865..25ad2dff27 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -67,7 +67,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index f9e2959b99..97b74749e1
[libvirt] [libvirt PATCH v2 43/44] Deprecate QEMU_CAPS_DISPLAY
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 12 src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c | 8 ++-- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml| 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml| 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvdata/aarch64-aavmf-virtio-mmio.args| 2 +- tests/qemuxml2argvdata/aarch64-acpi-uefi.args| 2 +- tests/qemuxml2argvdata/watchdog-injectnmi.args | 2 +- [ ... ] tests/qemuxml2argvdata/watchdog.args | 2 +- tests/qemuxml2argvdata/x86-kvm-32-on-64.args | 2 +- tests/qemuxml2argvtest.c | 3 +-- tests/qemuxml2xmltest.c | 3 +-- 597 files changed, 572 insertions(+), 615 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 8c77449bde..59456b2d5d 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3623,16 +3623,6 @@ static qemuMonitorCallbacks callbacks = { }; -/* Capabilities that we assume are always enabled - * for QEMU >= 1.2.0 - */ -static void -virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) -{ -virQEMUCapsSet(qemuCaps, QEMU_CAPS_DISPLAY); -} - - /** * virQEMUCapsInitQMPArch: * @qemuCaps: QEMU capabilities @@ -3762,8 +3752,6 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps, qemuCaps->package = package; qemuCaps->usedQMP = true; -virQEMUCapsInitQMPBasic(qemuCaps); - if (virQEMUCapsInitQMPArch(qemuCaps, mon) < 0) goto cleanup; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 5a19494659..594cc19213 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -371,7 +371,7 @@ typedef enum { QEMU_CAPS_OBJECT_TLS_CREDS_X509, /* -object tls-creds-x509 */ /* 230 */ -QEMU_CAPS_DISPLAY, /* -display */ +X_QEMU_CAPS_DISPLAY, /* -display */ QEMU_CAPS_DEVICE_INTEL_IOMMU, /* -device intel-iommu */ QEMU_CAPS_MACHINE_SMM_OPT, /* -machine xxx,smm=on/off/auto */ QEMU_CAPS_VIRTIO_PCI_DISABLE_LEGACY, /* virtio-*pci.disable-legacy */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 4376ab95ec..7061089b03 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -9797,12 +9797,8 @@ qemuBuildCommandLine(virQEMUDriverPtr driver, * these defaults ourselves... */ if (!def->ngraphics) { -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DISPLAY)) { -virCommandAddArg(cmd, "-display"); -virCommandAddArg(cmd, "none"); -} else { -virCommandAddArg(cmd, "-nographic"); -} +virCommandAddArg(cmd, "-display"); +virCommandAddArg(cmd, "none"); if (cfg->nogfxAllowHostAudio) virCommandAddEnvPassBlockSUID(cmd, "QEMU_AUDIO_DRV", NULL); diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 376731e034..f49df85865 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -103,7 +103,6 @@ - diff --git
[libvirt] [libvirt PATCH v2 25/44] Deprecate QEMU_CAPS_CHARDEV_SPICEVMC
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 4 +--- src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 5 - tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 16 tests/qemuxml2xmltest.c| 1 - 30 files changed, 6 insertions(+), 47 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 8ce05d59c9..d123dfcef3 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -2101,8 +2101,7 @@ virQEMUCapsProbeQMPObjects(virQEMUCapsPtr qemuCaps, } /* Prefer -chardev spicevmc (detected earlier) over -device spicevmc */ -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_SPICEVMC)) -virQEMUCapsClear(qemuCaps, QEMU_CAPS_DEVICE_SPICEVMC); +virQEMUCapsClear(qemuCaps, QEMU_CAPS_DEVICE_SPICEVMC); return 0; } @@ -3635,7 +3634,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_CHARDEV_SPICEVMC); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_SHUTDOWN); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_UNSAFE); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 5a522dc21d..7a859cb2cc 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -126,7 +126,7 @@ typedef enum { /* 55 */ QEMU_CAPS_CCID_PASSTHRU, /* -device ccid-card-passthru */ -QEMU_CAPS_CHARDEV_SPICEVMC, /* newer -chardev spicevmc */ +X_QEMU_CAPS_CHARDEV_SPICEVMC, /* newer -chardev spicevmc */ QEMU_CAPS_DEVICE_SPICEVMC, /* older -device spicevmc*/ QEMU_CAPS_VIRTIO_TX_ALG, /* -device virtio-net-pci,tx=string */ X_QEMU_CAPS_DEVICE_QXL_VGA, /* primary qxl device named qxl-vga? */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 7df10e8044..c00f2c431f 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5029,11 +5029,6 @@ qemuBuildChrChardevStr(virLogManagerPtr logManager, break; case VIR_DOMAIN_CHR_TYPE_SPICEVMC: -if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_SPICEVMC)) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("spicevmc not supported in this QEMU binary")); -goto cleanup; -} virBufferAsprintf(, "spicevmc,id=%s,name=%s", charAlias, virDomainChrSpicevmcTypeToString(dev->data.spicevmc)); break; diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index e62d01b593..36a486d18f 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -13,7 +13,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index 1b5342087a..11ab3f9b41 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -13,7 +13,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index 58ba9f7ffe..be13d02beb 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++
[libvirt] [libvirt PATCH v2 23/44] Deprecate QEMU_CAPS_VGA_NONE
Last use was removed by commit 0586cf98 deprecating QEMU_CAPS_DEVICE. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 3 +-- 28 files changed, 2 insertions(+), 29 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 8f0c52b163..d014b7f4ee 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3635,7 +3635,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_VGA_NONE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_AIO); virQEMUCapsSet(qemuCaps, QEMU_CAPS_CHARDEV_SPICEVMC); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index a09c0e298f..fe383433c1 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -113,7 +113,7 @@ typedef enum { /* 45 */ X_QEMU_CAPS_VGA_QXL, /* The 'qxl' arg for '-vga' */ QEMU_CAPS_SPICE, /* Is -spice avail */ -QEMU_CAPS_VGA_NONE, /* The 'none' arg for '-vga' */ +X_QEMU_CAPS_VGA_NONE, /* The 'none' arg for '-vga' */ X_QEMU_CAPS_MIGRATE_QEMU_FD, /* -incoming fd:n */ QEMU_CAPS_BOOTINDEX, /* -device bootindex property */ diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index edfd53315b..c32bc60a45 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -8,7 +8,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index bd2d90954c..aa4fab4cb5 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -8,7 +8,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index 57d4168075..a5dcc49a76 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -8,7 +8,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index 5854333123..19bc333a4c 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -8,7 +8,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml index d69b980bc7..bd21afd695 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml @@ -4,7 +4,6 @@ 0 - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml index 50e86a62ca..9ef5f84fb8 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml @@ -4,7 +4,6 @@ 0 - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml index f73ac4923b..2ec88ddae5 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml @@ -4,7
[libvirt] [libvirt PATCH v2 28/44] Deprecate QEMU_CAPS_NO_SHUTDOWN
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c | 4 +--- src/qemu/qemu_driver.c| 8 +--- src/qemu/qemu_process.c | 15 --- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml| 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml| 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvdata/aarch64-aavmf-virtio-mmio.args | 1 + tests/qemuxml2argvdata/aarch64-acpi-uefi.args | 1 + [ ... ] tests/qemuxml2argvdata/watchdog-injectnmi.args| 1 + tests/qemuxml2argvdata/watchdog.args | 1 + tests/qemuxml2argvdata/x86-kvm-32-on-64.args | 1 + tests/qemuxml2argvtest.c | 2 +- 635 files changed, 612 insertions(+), 49 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index e1c155c42b..ffecb35132 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3630,7 +3630,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_SHUTDOWN); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_UNSAFE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV_READONLY); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_COPY_ON_READ); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 8c83f81704..c814227c21 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -150,7 +150,7 @@ typedef enum { QEMU_CAPS_PCI_OHCI, /* -device pci-ohci */ QEMU_CAPS_USB_REDIR, /* -device usb-redir */ QEMU_CAPS_USB_HUB, /* -device usb-hub */ -QEMU_CAPS_NO_SHUTDOWN, /* usable -no-shutdown */ +X_QEMU_CAPS_NO_SHUTDOWN, /* usable -no-shutdown */ /* 75 */ QEMU_CAPS_DRIVE_CACHE_UNSAFE, /* Is cache=unsafe supported? */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 3bb285aed4..157898ee2b 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6223,10 +6223,8 @@ qemuBuildPMCommandLine(virCommandPtr cmd, * when QEMU stops. If we use no-shutdown, then we can * watch for this event and do a soft/warm reboot. */ -if (priv->monJSON && priv->allowReboot == VIR_TRISTATE_BOOL_YES && -virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_SHUTDOWN)) { +if (priv->monJSON && priv->allowReboot == VIR_TRISTATE_BOOL_YES) virCommandAddArg(cmd, "-no-shutdown"); -} if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_ACPI)) { if (def->features[VIR_DOMAIN_FEATURE_ACPI] != VIR_TRISTATE_SWITCH_ON) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index fd08817469..e3600d99de 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2122,13 +2122,7 @@ qemuDomainReboot(virDomainPtr dom, unsigned int flags) */ if ((!useAgent) || (ret < 0 && (acpiRequested || !flags))) { -#if WITH_YAJL -if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NO_SHUTDOWN)) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("ACPI reboot is not supported with this QEMU binary")); -goto endjob; -} -#else +#if !WITH_YAJL
[libvirt] [libvirt PATCH v2 34/44] Deprecate QEMU_CAPS_WAKEUP
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 2 -- src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_driver.c | 16 tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - 28 files changed, 1 insertion(+), 44 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 6fb39a1027..4dc94b8561 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -964,7 +964,6 @@ struct virQEMUCapsStringFlags { struct virQEMUCapsStringFlags virQEMUCapsCommands[] = { -{ "system_wakeup", QEMU_CAPS_WAKEUP }, { "transaction", QEMU_CAPS_TRANSACTION }, { "block-stream", QEMU_CAPS_BLOCKJOB_ASYNC }, { "dump-guest-memory", QEMU_CAPS_DUMP_GUEST_MEMORY }, @@ -3630,7 +3629,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_WAKEUP); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NETDEV_BRIDGE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_SECCOMP_SANDBOX); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DTB); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 79bab9359d..b36693f072 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -168,7 +168,7 @@ typedef enum { /* 85 */ X_QEMU_CAPS_DRIVE_IOTUNE, /* -drive bps= and friends */ -QEMU_CAPS_WAKEUP, /* system_wakeup monitor command */ +X_QEMU_CAPS_WAKEUP, /* system_wakeup monitor command */ QEMU_CAPS_SCSI_DISK_CHANNEL, /* Is scsi-disk.channel available? */ QEMU_CAPS_SCSI_BLOCK, /* -device scsi-block */ QEMU_CAPS_TRANSACTION, /* transaction monitor command */ diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 06b5d1387d..2cfcbacaf0 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -18747,15 +18747,6 @@ qemuDomainPMSuspendForDuration(virDomainPtr dom, goto endjob; } -if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_WAKEUP) && -(target == VIR_NODE_SUSPEND_TARGET_MEM || - target == VIR_NODE_SUSPEND_TARGET_HYBRID)) { -virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", - _("Unable to suspend domain due to " - "missing system_wakeup monitor command")); -goto endjob; -} - if (vm->def->pm.s3 || vm->def->pm.s4) { if (vm->def->pm.s3 == VIR_TRISTATE_BOOL_NO && (target == VIR_NODE_SUSPEND_TARGET_MEM || @@ -18816,13 +18807,6 @@ qemuDomainPMWakeup(virDomainPtr dom, priv = vm->privateData; -if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_WAKEUP)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("Unable to wake up domain due to " -"missing system_wakeup monitor command")); - goto endjob; -} - qemuDomainObjEnterMonitor(driver, vm); ret = qemuMonitorSystemWakeup(priv->mon); if (qemuDomainObjExitMonitor(driver, vm) < 0) diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 9fdb4cedeb..bcc623e020 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -29,7 +29,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index 2a1eb0b655..0d65b93608 100644
[libvirt] [libvirt PATCH v2 20/44] Deprecate QEMU_CAPS_FSDEV
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 6 -- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 10 +- tests/qemuxml2xmltest.c| 6 -- 30 files changed, 2 insertions(+), 48 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 3adb5c9af5..b98563d441 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3635,7 +3635,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NAME_PROCESS); virQEMUCapsSet(qemuCaps, QEMU_CAPS_SMBIOS_TYPE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_VGA_NONE); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index b2093e52db..8238b4070d 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -104,7 +104,7 @@ typedef enum { X_QEMU_CAPS_ENABLE_KQEMU, /* -enable-kqemu flag */ /* 40 */ -QEMU_CAPS_FSDEV, /* -fstype filesystem passthrough */ +X_QEMU_CAPS_FSDEV, /* -fstype filesystem passthrough */ QEMU_CAPS_NESTING, /* -enable-nesting (SVM/VMX) */ QEMU_CAPS_NAME_PROCESS, /* Is -name process= available */ X_QEMU_CAPS_DRIVE_READONLY, /* -drive readonly=on|off */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index cb3c251d12..2a4c261384 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2461,12 +2461,6 @@ qemuBuildFSDevCommandLine(virCommandPtr cmd, { size_t i; -if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_FSDEV) && def->nfss) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("filesystem passthrough not supported by this QEMU")); -return -1; -} - for (i = 0; i < def->nfss; i++) { char *optstr; virDomainFSDefPtr fs = def->fss[i]; diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 7fe822cbf9..770d0df191 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -7,7 +7,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index 711ad04f0f..cd093fd75c 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -7,7 +7,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index 4a6749a373..bfae3e804d 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -7,7 +7,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index f7f687c85d..81044e9e7c 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -7,7 +7,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml index 9947b7c961..b44373b5d6 100644 ---
[libvirt] [libvirt PATCH v2 19/44] Deprecate QEMU_CAPS_BOOT_MENU
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c | 15 --- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml| 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml| 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvdata/bios-nvram-secure.args| 2 +- tests/qemuxml2argvdata/bios-nvram.args | 2 +- tests/qemuxml2argvdata/bios.args | 2 +- tests/qemuxml2argvdata/disk-cdrom-tray.args | 2 +- tests/qemuxml2argvdata/disk-copy_on_read.args| 2 +- tests/qemuxml2argvdata/disk-drive-detect-zeroes.args | 2 +- tests/qemuxml2argvdata/disk-drive-discard.args | 2 +- tests/qemuxml2argvdata/disk-ioeventfd.args | 2 +- tests/qemuxml2argvdata/event_idx.args| 2 +- tests/qemuxml2argvdata/graphics-spice-timeout.args | 2 +- tests/qemuxml2argvdata/tpm-passthrough.args | 2 +- tests/qemuxml2argvdata/virtio-lun.args | 2 +- tests/qemuxml2argvtest.c | 16 ++-- tests/qemuxml2xmltest.c | 2 +- 42 files changed, 24 insertions(+), 61 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 801134f205..3adb5c9af5 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3635,7 +3635,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_BOOT_MENU); virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NAME_PROCESS); virQEMUCapsSet(qemuCaps, QEMU_CAPS_SMBIOS_TYPE); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 71a069a5c7..b2093e52db 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -100,7 +100,7 @@ typedef enum { QEMU_CAPS_TDF, /* -tdf flag (user-mode pit catchup) */ QEMU_CAPS_PCI_CONFIGFD, /* pci-assign.configfd */ X_QEMU_CAPS_NODEFCONFIG, /* -nodefconfig */ -QEMU_CAPS_BOOT_MENU, /* -boot menu=on support */ +X_QEMU_CAPS_BOOT_MENU, /* -boot menu=on support */ X_QEMU_CAPS_ENABLE_KQEMU, /* -enable-kqemu flag */ /* 40 */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index bb69aff100..cb3c251d12 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6374,17 +6374,10 @@ qemuBuildBootCommandLine(virCommandPtr cmd, } if (def->os.bootmenu) { -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_BOOT_MENU)) { -if (def->os.bootmenu == VIR_TRISTATE_BOOL_YES) -virBufferAddLit(_buf, "menu=on,"); -else -virBufferAddLit(_buf, "menu=off,"); -} else { -/* We cannot emit an error when bootmenu is enabled but - * unsupported because of backward compatibility */ -VIR_WARN("bootmenu is enabled but not " - "supported by this QEMU binary"); -} +if (def->os.bootmenu == VIR_TRISTATE_BOOL_YES) +virBufferAddLit(_buf, "menu=on,"); +else +virBufferAddLit(_buf, "menu=off,"); } if (def->os.bios.rt_set) { diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 9c95914dc0..7fe822cbf9 100644 ---
[libvirt] [libvirt PATCH v2 33/44] Deprecate QEMU_CAPS_DRIVE_IOTUNE
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 9 - src/qemu/qemu_driver.c | 14 -- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 6 +- 30 files changed, 2 insertions(+), 55 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b50652349a..6fb39a1027 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3630,7 +3630,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_IOTUNE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_WAKEUP); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NETDEV_BRIDGE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_SECCOMP_SANDBOX); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 0e86f35420..79bab9359d 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -167,7 +167,7 @@ typedef enum { X_QEMU_CAPS_FSDEV_WRITEOUT, /* -fsdev writeout supported */ /* 85 */ -QEMU_CAPS_DRIVE_IOTUNE, /* -drive bps= and friends */ +X_QEMU_CAPS_DRIVE_IOTUNE, /* -drive bps= and friends */ QEMU_CAPS_WAKEUP, /* system_wakeup monitor command */ QEMU_CAPS_SCSI_DISK_CHANNEL, /* Is scsi-disk.channel available? */ QEMU_CAPS_SCSI_BLOCK, /* -device scsi-block */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index ad2fed5b67..af7b895f8a 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1132,15 +1132,6 @@ qemuCheckDiskConfigBlkdeviotune(virDomainDiskDefPtr disk, } if (qemuCaps) { -/* block I/O throttling */ -if (qemuDiskConfigBlkdeviotuneHasBasic(disk) && -!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_IOTUNE)) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("block I/O throttling not supported with this " - "QEMU binary")); -return -1; -} - /* block I/O throttling 1.7 */ if (qemuDiskConfigBlkdeviotuneHasMax(disk) && !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_IOTUNE_MAX)) { diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index e3600d99de..06b5d1387d 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -18215,13 +18215,6 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, supportMaxLengthOptions = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DRIVE_IOTUNE_MAX_LENGTH); -if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DRIVE_IOTUNE)) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("block I/O throttling not supported with this " - "QEMU binary")); -goto endjob; -} - if (!supportMaxOptions && (set_fields & (QEMU_BLOCK_IOTUNE_SET_BYTES_MAX | QEMU_BLOCK_IOTUNE_SET_IOPS_MAX | @@ -18400,13 +18393,6 @@ qemuDomainGetBlockIoTune(virDomainPtr dom, if (def) { /* If the VM is running, we can check if the current VM can use * optional parameters or not. */ -if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_DRIVE_IOTUNE)) { -virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", -
[libvirt] [libvirt PATCH v2 42/44] Deprecate QEMU_CAPS_HOST_PCI_MULTIDOMAIN
Implied by QEMU >= 1.2.0. Delete the negative test cases now that they always pass. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 10 +- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 15 +++ tests/qemuxml2xmltest.c| 3 --- 30 files changed, 5 insertions(+), 51 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index c3198f554c..8c77449bde 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3629,7 +3629,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_HOST_PCI_MULTIDOMAIN); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DISPLAY); } diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index c32cfadd1e..5a19494659 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -280,7 +280,7 @@ typedef enum { /* 165 */ QEMU_CAPS_DEVICE_USB_KBD, /* -device usb-kbd */ -QEMU_CAPS_HOST_PCI_MULTIDOMAIN, /* support domain > 0 in host pci address */ +X_QEMU_CAPS_HOST_PCI_MULTIDOMAIN, /* support domain > 0 in host pci address */ QEMU_CAPS_MSG_TIMESTAMP, /* -msg timestamp */ QEMU_CAPS_ACTIVE_COMMIT, /* block-commit works without 'top' */ QEMU_CAPS_CHANGE_BACKING_FILE, /* change name of backing file in metadata */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index d9ee988288..4376ab95ec 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -4466,16 +4466,8 @@ qemuBuildPCIHostdevDevStr(const virDomainDef *def, } virBufferAddLit(, ",host="); -if (pcisrc->addr.domain) { -if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_HOST_PCI_MULTIDOMAIN)) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("non-zero domain='%.4x' in host device PCI address " - "not supported in this QEMU binary"), - pcisrc->addr.domain); -goto error; -} +if (pcisrc->addr.domain) virBufferAsprintf(, "%.4x:", pcisrc->addr.domain); -} virBufferAsprintf(, "%.2x:%.2x.%.1x", pcisrc->addr.bus, pcisrc->addr.slot, pcisrc->addr.function); diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index cc1687237f..376731e034 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -87,7 +87,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index 70de6f5d6f..a42f9d1d14 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -91,7 +91,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index e2528f10d4..cdae63e399 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -92,7 +92,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml
[libvirt] [libvirt PATCH v2 26/44] Deprecate QEMU_CAPS_DEVICE_SPICEVMC
The (now assumed) QEMU_CAPS_CHARDEV_SPICEVMC is preferred. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 4 -- src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c | 71 tests/qemuxml2argvdata/channel-spicevmc-old.args | 30 -- tests/qemuxml2argvdata/channel-spicevmc-old.xml | 35 tests/qemuxml2argvtest.c | 4 -- 6 files changed, 25 insertions(+), 121 deletions(-) delete mode 100644 tests/qemuxml2argvdata/channel-spicevmc-old.args delete mode 100644 tests/qemuxml2argvdata/channel-spicevmc-old.xml diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index d123dfcef3..fca73cf9b1 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1025,7 +1025,6 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = { { "virtio-scsi-ccw", QEMU_CAPS_VIRTIO_SCSI }, { "virtio-scsi-device", QEMU_CAPS_VIRTIO_SCSI }, { "megasas", QEMU_CAPS_SCSI_MEGASAS }, -{ "spicevmc", QEMU_CAPS_DEVICE_SPICEVMC }, { "qxl", QEMU_CAPS_DEVICE_QXL }, { "sga", QEMU_CAPS_SGA }, { "scsi-block", QEMU_CAPS_SCSI_BLOCK }, @@ -2100,9 +2099,6 @@ virQEMUCapsProbeQMPObjects(virQEMUCapsPtr qemuCaps, virStringListFreeCount(values, nvalues); } -/* Prefer -chardev spicevmc (detected earlier) over -device spicevmc */ -virQEMUCapsClear(qemuCaps, QEMU_CAPS_DEVICE_SPICEVMC); - return 0; } diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 7a859cb2cc..83b2980180 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -127,7 +127,7 @@ typedef enum { /* 55 */ QEMU_CAPS_CCID_PASSTHRU, /* -device ccid-card-passthru */ X_QEMU_CAPS_CHARDEV_SPICEVMC, /* newer -chardev spicevmc */ -QEMU_CAPS_DEVICE_SPICEVMC, /* older -device spicevmc*/ +X_QEMU_CAPS_DEVICE_SPICEVMC, /* older -device spicevmc*/ QEMU_CAPS_VIRTIO_TX_ALG, /* -device virtio-net-pci,tx=string */ X_QEMU_CAPS_DEVICE_QXL_VGA, /* primary qxl device named qxl-vga? */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index c00f2c431f..03592a20ab 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5359,8 +5359,7 @@ qemuBuildMonitorCommandLine(virLogManagerPtr logManager, static char * qemuBuildVirtioSerialPortDevStr(const virDomainDef *def, -virDomainChrDefPtr dev, -virQEMUCapsPtr qemuCaps) +virDomainChrDefPtr dev) { virBuffer buf = VIR_BUFFER_INITIALIZER; const char *contAlias; @@ -5370,13 +5369,7 @@ qemuBuildVirtioSerialPortDevStr(const virDomainDef *def, virBufferAddLit(, "virtconsole"); break; case VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL: -/* Legacy syntax '-device spicevmc' */ -if (dev->source->type == VIR_DOMAIN_CHR_TYPE_SPICEVMC && -virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_SPICEVMC)) { -virBufferAddLit(, "spicevmc"); -} else { -virBufferAddLit(, "virtserialport"); -} +virBufferAddLit(, "virtserialport"); break; default: virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", @@ -5414,19 +5407,13 @@ qemuBuildVirtioSerialPortDevStr(const virDomainDef *def, goto error; } -if (!(dev->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL && - dev->source->type == VIR_DOMAIN_CHR_TYPE_SPICEVMC && - virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_SPICEVMC))) { -virBufferAsprintf(, ",chardev=char%s,id=%s", - dev->info.alias, dev->info.alias); -if (dev->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL && -(dev->source->type == VIR_DOMAIN_CHR_TYPE_SPICEVMC || - dev->target.name)) { -virBufferAsprintf(, ",name=%s", dev->target.name - ? dev->target.name : "com.redhat.spice.0"); -} -} else { -virBufferAsprintf(, ",id=%s", dev->info.alias); +virBufferAsprintf(, ",chardev=char%s,id=%s", + dev->info.alias, dev->info.alias); +if (dev->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL && +(dev->source->type == VIR_DOMAIN_CHR_TYPE_SPICEVMC || + dev->target.name)) { +virBufferAsprintf(, ",name=%s", dev->target.name + ? dev->target.name : "com.redhat.spice.0"); } if (virBufferCheckError() < 0) goto error; @@ -9147,23 +9134,15 @@ qemuBuildChannelsCommandLine(virLogManagerPtr logManager, break; case VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO: -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_SPICEVMC) && -channel->source->type == VIR_DOMAIN_CHR_TYPE_SPICEVMC) { -/* spicevmc was originally
[libvirt] [libvirt PATCH v2 37/44] Deprecate QEMU_CAPS_DTB
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 11 ++- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 16 tests/qemuxml2xmltest.c| 3 --- 30 files changed, 7 insertions(+), 51 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 2a26aecdd2..ca8fdf62a8 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3629,7 +3629,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_DTB); virQEMUCapsSet(qemuCaps, QEMU_CAPS_IPV6_MIGRATION); virQEMUCapsSet(qemuCaps, QEMU_CAPS_MACHINE_OPT); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DUMP_GUEST_CORE); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 4f3934f1a9..645156c42f 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -233,7 +233,7 @@ typedef enum { QEMU_CAPS_OBJECT_RNG_RANDOM, /* the rng-random backend for virtio rng */ QEMU_CAPS_OBJECT_RNG_EGD, /* EGD protocol daemon for rng */ QEMU_CAPS_VIRTIO_CCW, /* -device virtio-*-ccw */ -QEMU_CAPS_DTB, /* -dtb file */ +X_QEMU_CAPS_DTB, /* -dtb file */ QEMU_CAPS_SCSI_MEGASAS, /* -device megasas */ /* 135 */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index cea3517258..45722aa1fe 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6347,15 +6347,8 @@ qemuBuildBootCommandLine(virCommandPtr cmd, virCommandAddArgList(cmd, "-initrd", def->os.initrd, NULL); if (def->os.cmdline) virCommandAddArgList(cmd, "-append", def->os.cmdline, NULL); -if (def->os.dtb) { -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DTB)) { -virCommandAddArgList(cmd, "-dtb", def->os.dtb, NULL); -} else { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("dtb is not supported with this QEMU binary")); -goto error; -} -} +if (def->os.dtb) +virCommandAddArgList(cmd, "-dtb", def->os.dtb, NULL); if (def->os.slic_table) { virBuffer buf = VIR_BUFFER_INITIALIZER; virCommandAddArg(cmd, "-acpitable"); diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 69ee300ce7..21f0d7ded8 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -67,7 +67,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index 21c4ad9730..a903d80e2c 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -68,7 +68,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index f3ee50041d..197f43846d 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -68,7 +68,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index
[libvirt] [libvirt PATCH v2 41/44] Deprecate QEMU_CAPS_VNC_SHARE_POLICY
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 7 --- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 2 +- 29 files changed, 2 insertions(+), 35 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index c46e99362d..c3198f554c 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3629,7 +3629,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNC_SHARE_POLICY); virQEMUCapsSet(qemuCaps, QEMU_CAPS_HOST_PCI_MULTIDOMAIN); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DISPLAY); } diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 743f37aca3..c32cfadd1e 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -258,7 +258,7 @@ typedef enum { QEMU_CAPS_REALTIME_MLOCK, /* -realtime mlock=on|off */ /* 150 */ -QEMU_CAPS_VNC_SHARE_POLICY, /* set display sharing policy */ +X_QEMU_CAPS_VNC_SHARE_POLICY, /* set display sharing policy */ QEMU_CAPS_DEVICE_DEL_EVENT, /* DEVICE_DELETED event */ QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, /* -device i82801b11-bridge */ QEMU_CAPS_I440FX_PCI_HOLE64_SIZE, /* i440FX-pcihost.pci-hole64-size */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 5bd129c72a..d9ee988288 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7629,13 +7629,6 @@ qemuBuildGraphicsVNCCommandLine(virQEMUDriverConfigPtr cfg, } if (graphics->data.vnc.sharePolicy) { -if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC_SHARE_POLICY)) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("vnc display sharing policy is not " - "supported with this QEMU")); -goto error; -} - virBufferAsprintf(, ",share=%s", virDomainGraphicsVNCSharePolicyTypeToString( graphics->data.vnc.sharePolicy)); diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 779f5032b1..cc1687237f 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -77,7 +77,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index a2076c7a5a..70de6f5d6f 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -77,7 +77,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index f57088701b..e2528f10d4 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -78,7 +78,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index 8d8636655f..91824d7371 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -80,7 +80,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml
[libvirt] [libvirt PATCH v2 39/44] Deprecate QEMU_CAPS_MACHINE_OPT
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 317 + tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - .../aarch64-aavmf-virtio-mmio.args | 2 +- tests/qemuxml2argvdata/aarch64-acpi-uefi.args | 2 +- [ ... etc ... ] tests/qemuxml2argvdata/watchdog-injectnmi.args | 2 +- tests/qemuxml2argvdata/watchdog.args | 2 +- tests/qemuxml2argvtest.c | 142 + tests/qemuxml2xmltest.c| 2 - 597 files changed, 773 insertions(+), 853 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index ce9fad52a3..6af3cc9d61 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3629,7 +3629,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_MACHINE_OPT); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DUMP_GUEST_CORE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNC_SHARE_POLICY); virQEMUCapsSet(qemuCaps, QEMU_CAPS_HOST_PCI_MULTIDOMAIN); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index c57554db4f..f1a55c421d 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -238,7 +238,7 @@ typedef enum { /* 135 */ X_QEMU_CAPS_IPV6_MIGRATION, /* -incoming [::] */ -QEMU_CAPS_MACHINE_OPT, /* -machine */ +X_QEMU_CAPS_MACHINE_OPT, /* -machine */ QEMU_CAPS_MACHINE_USB_OPT, /* -machine xxx,usb=on/off */ QEMU_CAPS_DEVICE_TPM_PASSTHROUGH, /* -tpmdev passthrough */ QEMU_CAPS_DEVICE_TPM_TIS, /* -device tpm_tis */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 45722aa1fe..e6c70f84bf 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6996,6 +6996,9 @@ qemuBuildMachineCommandLine(virCommandPtr cmd, const virDomainDef *def, virQEMUCapsPtr qemuCaps) { +virTristateSwitch vmport = def->features[VIR_DOMAIN_FEATURE_VMPORT]; +virTristateSwitch smm = def->features[VIR_DOMAIN_FEATURE_SMM]; +virCPUDefPtr cpu = def->cpu; virBuffer buf = VIR_BUFFER_INITIALIZER; bool obsoleteAccel = false; size_t i; @@ -7008,228 +7011,186 @@ qemuBuildMachineCommandLine(virCommandPtr cmd, if (!def->os.machine) return 0; -if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MACHINE_OPT)) { -/* if no parameter to the machine type is needed, we still use - * '-M' to keep the most of the compatibility with older versions. - */ -virCommandAddArgList(cmd, "-M", def->os.machine, NULL); -if (def->mem.dump_core) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("dump-guest-core is not available " - "with this QEMU binary")); -return -1; -} - -if (def->mem.nosharepages) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("disable shared memory is not available " - "with this QEMU binary")); -return -1; -} +virCommandAddArg(cmd, "-machine"); +virBufferAdd(, def->os.machine, -1); +if (def->virtType == VIR_DOMAIN_VIRT_QEMU) +
[libvirt] [libvirt PATCH v2 22/44] Deprecate QEMU_CAPS_SMBIOS_TYPE
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 12 ++-- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 6 +++--- 29 files changed, 6 insertions(+), 40 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index e78a5edbc2..8f0c52b163 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3635,7 +3635,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_SMBIOS_TYPE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_VGA_NONE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_AIO); virQEMUCapsSet(qemuCaps, QEMU_CAPS_CHARDEV_SPICEVMC); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index a0bc7d75cc..a09c0e298f 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -108,7 +108,7 @@ typedef enum { QEMU_CAPS_NESTING, /* -enable-nesting (SVM/VMX) */ X_QEMU_CAPS_NAME_PROCESS, /* Is -name process= available */ X_QEMU_CAPS_DRIVE_READONLY, /* -drive readonly=on|off */ -QEMU_CAPS_SMBIOS_TYPE, /* Is -smbios type= available */ +X_QEMU_CAPS_SMBIOS_TYPE, /* Is -smbios type= available */ /* 45 */ X_QEMU_CAPS_VGA_QXL, /* The 'qxl' arg for '-vga' */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index c17676c943..d4f7b98b23 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5905,8 +5905,7 @@ qemuBuildSmbiosChassisStr(virSysinfoChassisDefPtr def) static int qemuBuildSmbiosCommandLine(virCommandPtr cmd, virQEMUDriverPtr driver, - const virDomainDef *def, - virQEMUCapsPtr qemuCaps) + const virDomainDef *def) { size_t i; virSysinfoDefPtr source = NULL; @@ -5916,13 +5915,6 @@ qemuBuildSmbiosCommandLine(virCommandPtr cmd, def->os.smbios_mode == VIR_DOMAIN_SMBIOS_EMULATE) return 0; -if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SMBIOS_TYPE)) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("the QEMU binary %s does not support smbios settings"), - def->emulator); -return -1; -} - /* should we really error out or just warn in those cases ? */ if (def->os.smbios_mode == VIR_DOMAIN_SMBIOS_HOST) { if (driver->hostsysinfo == NULL) { @@ -9945,7 +9937,7 @@ qemuBuildCommandLine(virQEMUDriverPtr driver, virUUIDFormat(def->uuid, uuid); virCommandAddArgList(cmd, "-uuid", uuid, NULL); -if (qemuBuildSmbiosCommandLine(cmd, driver, def, qemuCaps) < 0) +if (qemuBuildSmbiosCommandLine(cmd, driver, def) < 0) goto error; /* diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index b03e0db346..edfd53315b 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -7,7 +7,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index cc80ca13d2..bd2d90954c 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++
[libvirt] [libvirt PATCH v2 32/44] Deprecate QEMU_CAPS_FSDEV_WRITEOUT
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 16 tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 10 +- tests/qemuxml2xmltest.c| 6 -- 30 files changed, 6 insertions(+), 54 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b3f9a6f4e9..b50652349a 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3630,7 +3630,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV_WRITEOUT); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_IOTUNE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_WAKEUP); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NETDEV_BRIDGE); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index e5c5d197fc..0e86f35420 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -164,7 +164,7 @@ typedef enum { X_QEMU_CAPS_VIRTIO_BLK_SG_IO, /* SG_IO commands */ X_QEMU_CAPS_DRIVE_COPY_ON_READ, /* -drive copy-on-read */ X_QEMU_CAPS_CPU_HOST, /* support for -cpu host */ -QEMU_CAPS_FSDEV_WRITEOUT, /* -fsdev writeout supported */ +X_QEMU_CAPS_FSDEV_WRITEOUT, /* -fsdev writeout supported */ /* 85 */ QEMU_CAPS_DRIVE_IOTUNE, /* -drive bps= and friends */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 22b25ef46a..ad2fed5b67 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2312,8 +2312,7 @@ qemuBuildDiskDriveCommandLine(virCommandPtr cmd, static char * -qemuBuildFSStr(virDomainFSDefPtr fs, - virQEMUCapsPtr qemuCaps) +qemuBuildFSStr(virDomainFSDefPtr fs) { virBuffer opt = VIR_BUFFER_INITIALIZER; const char *driver = qemuDomainFSDriverTypeToString(fs->fsdriver); @@ -2351,15 +2350,8 @@ qemuBuildFSStr(virDomainFSDefPtr fs, } } -if (fs->wrpolicy) { -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_FSDEV_WRITEOUT)) { -virBufferAsprintf(, ",writeout=%s", wrpolicy); -} else { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("filesystem writeout not supported")); -goto error; -} -} +if (fs->wrpolicy) +virBufferAsprintf(, ",writeout=%s", wrpolicy); virBufferAsprintf(, ",id=%s%s", QEMU_FSDEV_HOST_PREFIX, fs->info.alias); virBufferAsprintf(, ",path=%s", fs->src->path); @@ -2430,7 +2422,7 @@ qemuBuildFSDevCommandLine(virCommandPtr cmd, virDomainFSDefPtr fs = def->fss[i]; virCommandAddArg(cmd, "-fsdev"); -if (!(optstr = qemuBuildFSStr(fs, qemuCaps))) +if (!(optstr = qemuBuildFSStr(fs))) return -1; virCommandAddArg(cmd, optstr); VIR_FREE(optstr); diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 9ffe77a890..8a5e3f87ee 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -29,7 +29,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index 81fa3e5988..8306c9a6eb 100644 ---
[libvirt] [libvirt PATCH v2 15/44] Deprecate QEMU_CAPS_RTC
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 41 -- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - .../aarch64-aavmf-virtio-mmio.args | 1 + tests/qemuxml2argvdata/aarch64-acpi-uefi.args | 1 + [ ... etc ... ] tests/qemuxml2argvdata/watchdog.args | 1 + tests/qemuxml2argvdata/x86-kvm-32-on-64.args | 1 + tests/qemuxml2argvtest.c | 13 --- tests/qemuxml2xmltest.c| 1 - 630 files changed, 613 insertions(+), 71 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 63eb1a5768..8ac6b7008a 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3635,7 +3635,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_RTC); virQEMUCapsSet(qemuCaps, QEMU_CAPS_VHOST_NET); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NODEFCONFIG); virQEMUCapsSet(qemuCaps, QEMU_CAPS_BOOT_MENU); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 71bea5a623..231ff306e4 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -90,7 +90,7 @@ typedef enum { X_QEMU_CAPS_NETDEV, /* -netdev flag & netdev_add/remove */ /* 30 */ -QEMU_CAPS_RTC, /* The -rtc flag for clock options */ +X_QEMU_CAPS_RTC, /* The -rtc flag for clock options */ QEMU_CAPS_VHOST_NET, /* vhost-net support available */ QEMU_CAPS_RTC_TD_HACK, /* -rtc-td-hack available */ QEMU_CAPS_NO_HPET, /* -no-hpet flag is supported */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 6851bd7bcf..c0851d296d 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6151,32 +6151,13 @@ qemuBuildClockCommandLine(virCommandPtr cmd, virQEMUCapsPtr qemuCaps) { size_t i; +char *rtcopt; -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_RTC)) { -char *rtcopt; -virCommandAddArg(cmd, "-rtc"); -if (!(rtcopt = qemuBuildClockArgStr(>clock))) -return -1; -virCommandAddArg(cmd, rtcopt); -VIR_FREE(rtcopt); -} else { -switch (def->clock.offset) { -case VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME: -case VIR_DOMAIN_CLOCK_OFFSET_TIMEZONE: -virCommandAddArg(cmd, "-localtime"); -break; - -case VIR_DOMAIN_CLOCK_OFFSET_UTC: -/* Nothing, its the default */ -break; - -default: -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unsupported clock offset '%s'"), - virDomainClockOffsetTypeToString(def->clock.offset)); -return -1; -} -} +virCommandAddArg(cmd, "-rtc"); +if (!(rtcopt = qemuBuildClockArgStr(>clock))) +return -1; +virCommandAddArg(cmd, rtcopt); +VIR_FREE(rtcopt); if (def->clock.offset == VIR_DOMAIN_CLOCK_OFFSET_TIMEZONE && def->clock.data.timezone) { @@ -6218,16 +6199,6 @@ qemuBuildClockCommandLine(virCommandPtr cmd, virDomainTimerTickpolicyTypeToString(def->clock.timers[i]->tickpolicy)); return -1; } -} else if
[libvirt] [libvirt PATCH v2 18/44] Deprecate QEMU_CAPS_NODEFCONFIG
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 366 +++-- tests/qemuxml2xmltest.c| 63 ++-- 29 files changed, 134 insertions(+), 323 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index dc83dd158d..801134f205 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3635,7 +3635,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_NODEFCONFIG); virQEMUCapsSet(qemuCaps, QEMU_CAPS_BOOT_MENU); virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NAME_PROCESS); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 6f0be3763d..71a069a5c7 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -99,7 +99,7 @@ typedef enum { /* 35 */ QEMU_CAPS_TDF, /* -tdf flag (user-mode pit catchup) */ QEMU_CAPS_PCI_CONFIGFD, /* pci-assign.configfd */ -QEMU_CAPS_NODEFCONFIG, /* -nodefconfig */ +X_QEMU_CAPS_NODEFCONFIG, /* -nodefconfig */ QEMU_CAPS_BOOT_MENU, /* -boot menu=on support */ X_QEMU_CAPS_ENABLE_KQEMU, /* -enable-kqemu flag */ diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 3cc8c22c26..9c95914dc0 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -7,7 +7,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index 617759bf86..c1d8135948 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -7,7 +7,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index a02826bb09..f65dfdffd8 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -7,7 +7,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index 49458e7439..7d4a1cc0fd 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -7,7 +7,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml index c74e636dc1..4069facdda 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml @@ -4,7 +4,6 @@ 0 - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml index cfac4d99ae..a11ed25cf6 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml @@ -4,7 +4,6 @@ 0 - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml index 0b105afaec..c9ebfa2b32 100644 ---
[libvirt] [libvirt PATCH v2 24/44] Deprecate QEMU_CAPS_DRIVE_AIO
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 7 --- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 3 +-- 29 files changed, 2 insertions(+), 36 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index d014b7f4ee..8ce05d59c9 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3635,7 +3635,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_AIO); virQEMUCapsSet(qemuCaps, QEMU_CAPS_CHARDEV_SPICEVMC); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_SHUTDOWN); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index fe383433c1..5a522dc21d 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -119,7 +119,7 @@ typedef enum { /* 50 */ QEMU_CAPS_HDA_DUPLEX, /* -device hda-duplex */ -QEMU_CAPS_DRIVE_AIO, /* -drive aio= supported */ +X_QEMU_CAPS_DRIVE_AIO, /* -drive aio= supported */ X_QEMU_CAPS_PCI_MULTIBUS, /* bus=pci.0 vs bus=pci */ QEMU_CAPS_PCI_BOOTINDEX, /* pci-assign.bootindex */ QEMU_CAPS_CCID_EMULATED, /* -device ccid-card-emulated */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index d4f7b98b23..7df10e8044 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1382,13 +1382,6 @@ qemuCheckDiskConfig(virDomainDiskDefPtr disk, _("detect_zeroes is not supported by this QEMU binary")); return -1; } - -if (disk->iomode && -!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_AIO)) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("disk aio mode not supported with this QEMU binary")); -return -1; -} } if (disk->serial && diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index c32bc60a45..e62d01b593 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -10,7 +10,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index aa4fab4cb5..1b5342087a 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -10,7 +10,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index a5dcc49a76..58ba9f7ffe 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -10,7 +10,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index 19bc333a4c..407a28da82 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -10,7 +10,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml index bd21afd695..d237323da0 100644 ---
[libvirt] [libvirt PATCH v2 16/44] Deprecate QEMU_CAPS_RTC_TD_HACK
Implied by QEMU >= 0.12.0. Deprecated by QEMU commit 1ed2fc1 included in 0.12.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c | 21 + 2 files changed, 2 insertions(+), 21 deletions(-) diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 231ff306e4..32f152c142 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -92,7 +92,7 @@ typedef enum { /* 30 */ X_QEMU_CAPS_RTC, /* The -rtc flag for clock options */ QEMU_CAPS_VHOST_NET, /* vhost-net support available */ -QEMU_CAPS_RTC_TD_HACK, /* -rtc-td-hack available */ +X_QEMU_CAPS_RTC_TD_HACK, /* -rtc-td-hack available */ QEMU_CAPS_NO_HPET, /* -no-hpet flag is supported */ QEMU_CAPS_NO_KVM_PIT, /* -no-kvm-pit-reinjection supported */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index c0851d296d..ee8933cc54 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -6180,26 +6180,7 @@ qemuBuildClockCommandLine(virCommandPtr cmd, break; case VIR_DOMAIN_TIMER_NAME_RTC: -/* This has already been taken care of (in qemuBuildClockArgStr) - if QEMU_CAPS_RTC is set (mutually exclusive with - QEMUD_FLAG_RTC_TD_HACK) */ -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_RTC_TD_HACK)) { -switch (def->clock.timers[i]->tickpolicy) { -case -1: -case VIR_DOMAIN_TIMER_TICKPOLICY_DELAY: -/* the default - do nothing */ -break; -case VIR_DOMAIN_TIMER_TICKPOLICY_CATCHUP: -virCommandAddArg(cmd, "-rtc-td-hack"); -break; -case VIR_DOMAIN_TIMER_TICKPOLICY_MERGE: -case VIR_DOMAIN_TIMER_TICKPOLICY_DISCARD: -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unsupported rtc tickpolicy '%s'"), - virDomainTimerTickpolicyTypeToString(def->clock.timers[i]->tickpolicy)); -return -1; -} -} +/* Already handled in qemuBuildClockArgStr */ break; case VIR_DOMAIN_TIMER_NAME_PIT: -- 2.16.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [libvirt PATCH v2 31/44] Deprecate QEMU_CAPS_DRIVE_COPY_ON_READ
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 7 --- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 4 +--- 29 files changed, 2 insertions(+), 37 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b10ba25294..b3f9a6f4e9 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3630,7 +3630,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_COPY_ON_READ); virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV_WRITEOUT); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_IOTUNE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_WAKEUP); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 6bd5f2433e..e5c5d197fc 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -162,7 +162,7 @@ typedef enum { /* 80 */ QEMU_CAPS_VIRTIO_BLK_SCSI, /* virtio-blk-pci.scsi */ X_QEMU_CAPS_VIRTIO_BLK_SG_IO, /* SG_IO commands */ -QEMU_CAPS_DRIVE_COPY_ON_READ, /* -drive copy-on-read */ +X_QEMU_CAPS_DRIVE_COPY_ON_READ, /* -drive copy-on-read */ X_QEMU_CAPS_CPU_HOST, /* support for -cpu host */ QEMU_CAPS_FSDEV_WRITEOUT, /* -fsdev writeout supported */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 228eae45cb..22b25ef46a 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1348,13 +1348,6 @@ qemuCheckDiskConfig(virDomainDiskDefPtr disk, return -1; } -if (disk->copy_on_read && -!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_COPY_ON_READ)) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("copy_on_read is not supported by this QEMU binary")); -return -1; -} - if (disk->discard && !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_DISCARD)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index f9d7babc98..9ffe77a890 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -29,7 +29,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index da4cf265d4..81fa3e5988 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -29,7 +29,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index cbf81f0f05..7f06a83296 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -29,7 +29,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index 306fc30895..aa09231fa0 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -29,7 +29,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml
[libvirt] [libvirt PATCH v2 38/44] Deprecate QEMU_CAPS_IPV6_MIGRATION
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_migration.c | 10 +- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - 28 files changed, 2 insertions(+), 36 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index ca8fdf62a8..ce9fad52a3 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3629,7 +3629,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_IPV6_MIGRATION); virQEMUCapsSet(qemuCaps, QEMU_CAPS_MACHINE_OPT); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DUMP_GUEST_CORE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNC_SHARE_POLICY); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 645156c42f..c57554db4f 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -237,7 +237,7 @@ typedef enum { QEMU_CAPS_SCSI_MEGASAS, /* -device megasas */ /* 135 */ -QEMU_CAPS_IPV6_MIGRATION, /* -incoming [::] */ +X_QEMU_CAPS_IPV6_MIGRATION, /* -incoming [::] */ QEMU_CAPS_MACHINE_OPT, /* -machine */ QEMU_CAPS_MACHINE_USB_OPT, /* -machine xxx,usb=on/off */ QEMU_CAPS_DEVICE_TPM_PASSTHROUGH, /* -tpmdev passthrough */ diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index e5231555de..d301f3c2ba 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -2304,7 +2304,6 @@ qemuMigrationDstPrepare(virDomainObjPtr vm, } else { bool encloseAddress = false; bool hostIPv6Capable = false; -bool qemuIPv6Capable = false; struct addrinfo *info = NULL; struct addrinfo hints = { .ai_flags = AI_ADDRCONFIG, .ai_socktype = SOCK_STREAM }; @@ -2314,16 +2313,9 @@ qemuMigrationDstPrepare(virDomainObjPtr vm, freeaddrinfo(info); hostIPv6Capable = true; } -qemuIPv6Capable = virQEMUCapsGet(priv->qemuCaps, - QEMU_CAPS_IPV6_MIGRATION); if (listenAddress) { if (virSocketAddrNumericFamily(listenAddress) == AF_INET6) { -if (!qemuIPv6Capable) { -virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", - _("qemu isn't capable of IPv6")); -goto cleanup; -} if (!hostIPv6Capable) { virReportError(VIR_ERR_ARGUMENT_UNSUPPORTED, "%s", _("host isn't capable of IPv6")); @@ -2334,7 +2326,7 @@ qemuMigrationDstPrepare(virDomainObjPtr vm, } else { /* listenAddress is a hostname or IPv4 */ } -} else if (qemuIPv6Capable && hostIPv6Capable) { +} else if (hostIPv6Capable) { /* Listen on :: instead of 0.0.0.0 if QEMU understands it * and there is at least one IPv6 address configured */ diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 21f0d7ded8..37baf9e19a 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -68,7 +68,6 @@ - diff --git
[libvirt] [libvirt PATCH v2 17/44] Deprecate QEMU_CAPS_VHOST_NET
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 3 +-- src/qemu/qemu_hotplug.c| 9 +++-- src/qemu/qemu_interface.c | 4 +--- src/qemu/qemu_interface.h | 1 - tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - 31 files changed, 6 insertions(+), 39 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 8ac6b7008a..dc83dd158d 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3635,7 +3635,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_VHOST_NET); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NODEFCONFIG); virQEMUCapsSet(qemuCaps, QEMU_CAPS_BOOT_MENU); virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 32f152c142..6f0be3763d 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -91,7 +91,7 @@ typedef enum { /* 30 */ X_QEMU_CAPS_RTC, /* The -rtc flag for clock options */ -QEMU_CAPS_VHOST_NET, /* vhost-net support available */ +X_QEMU_CAPS_VHOST_NET, /* vhost-net support available */ X_QEMU_CAPS_RTC_TD_HACK, /* -rtc-td-hack available */ QEMU_CAPS_NO_HPET, /* -no-hpet flag is supported */ QEMU_CAPS_NO_KVM_PIT, /* -no-kvm-pit-reinjection supported */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index ee8933cc54..bb69aff100 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -8459,8 +8459,7 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver, memset(vhostfd, -1, vhostfdSize * sizeof(vhostfd[0])); -if (qemuInterfaceOpenVhostNet(def, net, qemuCaps, - vhostfd, ) < 0) +if (qemuInterfaceOpenVhostNet(def, net, vhostfd, ) < 0) goto cleanup; } diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 8aacd8376f..61590604eb 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -895,8 +895,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, tapfd, ) < 0) goto cleanup; iface_connected = true; -if (qemuInterfaceOpenVhostNet(vm->def, net, priv->qemuCaps, - vhostfd, ) < 0) +if (qemuInterfaceOpenVhostNet(vm->def, net, vhostfd, ) < 0) goto cleanup; break; @@ -916,8 +915,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, VIR_NETDEV_VPORT_PROFILE_OP_CREATE) < 0) goto cleanup; iface_connected = true; -if (qemuInterfaceOpenVhostNet(vm->def, net, priv->qemuCaps, - vhostfd, ) < 0) +if (qemuInterfaceOpenVhostNet(vm->def, net, vhostfd, ) < 0) goto cleanup; break; @@ -936,8 +934,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, tapfd, tapfdSize) < 0) goto cleanup; iface_connected = true; -if (qemuInterfaceOpenVhostNet(vm->def, net, priv->qemuCaps, - vhostfd, ) < 0) +if (qemuInterfaceOpenVhostNet(vm->def, net, vhostfd, ) < 0)
[libvirt] [libvirt PATCH v2 35/44] Deprecate QEMU_CAPS_NETDEV_BRIDGE
Unused since commit <2d80fbb1>. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - 27 files changed, 1 insertion(+), 27 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 4dc94b8561..c242886c85 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3629,7 +3629,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_NETDEV_BRIDGE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_SECCOMP_SANDBOX); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DTB); virQEMUCapsSet(qemuCaps, QEMU_CAPS_IPV6_MIGRATION); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index b36693f072..2b9b55ac45 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -188,7 +188,7 @@ typedef enum { QEMU_CAPS_BALLOON_EVENT, /* Async event for balloon changes */ /* 100 */ -QEMU_CAPS_NETDEV_BRIDGE, /* bridge helper support */ +X_QEMU_CAPS_NETDEV_BRIDGE, /* bridge helper support */ QEMU_CAPS_SCSI_LSI, /* -device lsi */ QEMU_CAPS_VIRTIO_SCSI, /* -device virtio-scsi-* */ QEMU_CAPS_BLOCKIO, /* -device ...logical_block_size & co */ diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index bcc623e020..dad34c6883 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -39,7 +39,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index 0d65b93608..b571fd5d82 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -39,7 +39,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index e58ede2425..181d6f8934 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -39,7 +39,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index 18b0613570..b9a6f7251e 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -39,7 +39,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml index f07d222ed4..c667f43429 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml @@ -30,7 +30,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml index 716c174ae4..c083d67d28 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml @@ -29,7 +29,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml index 47d6bd1345..e43887630e 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml @@ -17,7 +17,6 @@ - diff --git
[libvirt] [libvirt PATCH v2 36/44] Deprecate QEMU_CAPS_SECCOMP_SANDBOX
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 14 -- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - 28 files changed, 5 insertions(+), 37 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index c242886c85..2a26aecdd2 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3629,7 +3629,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_SECCOMP_SANDBOX); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DTB); virQEMUCapsSet(qemuCaps, QEMU_CAPS_IPV6_MIGRATION); virQEMUCapsSet(qemuCaps, QEMU_CAPS_MACHINE_OPT); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 2b9b55ac45..4f3934f1a9 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -199,7 +199,7 @@ typedef enum { QEMU_CAPS_USB_REDIR_FILTER, /* usb-redir.filter */ QEMU_CAPS_IDE_DRIVE_WWN, /* Is ide-drive.wwn available? */ QEMU_CAPS_SCSI_DISK_WWN, /* Is scsi-disk.wwn available? */ -QEMU_CAPS_SECCOMP_SANDBOX, /* -sandbox */ +X_QEMU_CAPS_SECCOMP_SANDBOX, /* -sandbox */ /* 110 */ QEMU_CAPS_REBOOT_TIMEOUT, /* -boot reboot-timeout */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index af7b895f8a..cea3517258 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -10002,16 +10002,10 @@ qemuBuildCommandLine(virQEMUDriverPtr driver, ? qemucmd->env_value[i] : ""); } -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SECCOMP_SANDBOX)) { -if (cfg->seccompSandbox == 0) -virCommandAddArgList(cmd, "-sandbox", "off", NULL); -else if (cfg->seccompSandbox > 0) -virCommandAddArgList(cmd, "-sandbox", "on", NULL); -} else if (cfg->seccompSandbox > 0) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("QEMU does not support seccomp sandboxes")); -goto error; -} +if (cfg->seccompSandbox == 0) +virCommandAddArgList(cmd, "-sandbox", "off", NULL); +else if (cfg->seccompSandbox > 0) +virCommandAddArgList(cmd, "-sandbox", "on", NULL); if (qemuBuildPanicCommandLine(cmd, def, qemuCaps) < 0) goto error; diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index dad34c6883..69ee300ce7 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -47,7 +47,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index b571fd5d82..21c4ad9730 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -47,7 +47,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index 181d6f8934..f3ee50041d 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -47,7 +47,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index
[libvirt] [libvirt PATCH v2 27/44] Deprecate QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 7 --- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 3 +-- 29 files changed, 2 insertions(+), 36 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index fca73cf9b1..e1c155c42b 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3630,7 +3630,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_SHUTDOWN); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_UNSAFE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV_READONLY); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 83b2980180..8c83f81704 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -139,7 +139,7 @@ typedef enum { QEMU_CAPS_VIRTIO_NET_EVENT_IDX, /* virtio-net-pci.event_idx */ /* 65 */ -QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC, /* Is cache=directsync supported? */ +X_QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC, /* Is cache=directsync supported? */ QEMU_CAPS_PIIX3_USB_UHCI, /* -device piix3-usb-uhci */ QEMU_CAPS_PIIX4_USB_UHCI, /* -device piix4-usb-uhci */ QEMU_CAPS_USB_EHCI, /* -device usb-ehci */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 03592a20ab..3bb285aed4 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1348,13 +1348,6 @@ qemuCheckDiskConfig(virDomainDiskDefPtr disk, return -1; } -if (disk->cachemode == VIR_DOMAIN_DISK_CACHE_DIRECTSYNC && -!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC)) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("disk cache mode 'directsync' is not supported by this QEMU")); -return -1; -} - if (disk->cachemode == VIR_DOMAIN_DISK_CACHE_UNSAFE && !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_UNSAFE)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 36a486d18f..3ace4ee1d3 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -18,7 +18,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index 11ab3f9b41..4203337c2d 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -18,7 +18,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index be13d02beb..95c6b154f2 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -18,7 +18,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index dfda66f068..df9b610178 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -18,7 +18,6 @@ -
[libvirt] [libvirt PATCH v2 29/44] Deprecate QEMU_CAPS_DRIVE_CACHE_UNSAFE
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 7 --- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 3 +-- 29 files changed, 2 insertions(+), 36 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index ffecb35132..98b4982586 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3630,7 +3630,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_UNSAFE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV_READONLY); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_COPY_ON_READ); virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV_WRITEOUT); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index c814227c21..8fa973ed80 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -153,7 +153,7 @@ typedef enum { X_QEMU_CAPS_NO_SHUTDOWN, /* usable -no-shutdown */ /* 75 */ -QEMU_CAPS_DRIVE_CACHE_UNSAFE, /* Is cache=unsafe supported? */ +X_QEMU_CAPS_DRIVE_CACHE_UNSAFE, /* Is cache=unsafe supported? */ X_QEMU_CAPS_PCI_ROMBAR, /* -device rombar=0|1 */ QEMU_CAPS_ICH9_AHCI, /* -device ich9-ahci */ QEMU_CAPS_NO_ACPI, /* -no-acpi */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 157898ee2b..4904c879f5 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1348,13 +1348,6 @@ qemuCheckDiskConfig(virDomainDiskDefPtr disk, return -1; } -if (disk->cachemode == VIR_DOMAIN_DISK_CACHE_UNSAFE && -!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_UNSAFE)) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("disk cache mode 'unsafe' is not supported by this QEMU")); -return -1; -} - if (disk->copy_on_read && !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_COPY_ON_READ)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index fedb71b094..58208d3f3b 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -26,7 +26,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index 85834e7136..d6183e4009 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -26,7 +26,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index fe17eef72d..4af8078a56 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -26,7 +26,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index 3a4c5e5b2f..6bd1dcfb99 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -26,7 +26,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml
[libvirt] [libvirt PATCH v2 30/44] Deprecate QEMU_CAPS_FSDEV_READONLY
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 12 ++-- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - 28 files changed, 3 insertions(+), 37 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 98b4982586..b10ba25294 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3630,7 +3630,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV_READONLY); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_COPY_ON_READ); virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV_WRITEOUT); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_IOTUNE); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 8fa973ed80..6bd5f2433e 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -157,7 +157,7 @@ typedef enum { X_QEMU_CAPS_PCI_ROMBAR, /* -device rombar=0|1 */ QEMU_CAPS_ICH9_AHCI, /* -device ich9-ahci */ QEMU_CAPS_NO_ACPI, /* -no-acpi */ -QEMU_CAPS_FSDEV_READONLY, /* -fsdev readonly supported */ +X_QEMU_CAPS_FSDEV_READONLY, /* -fsdev readonly supported */ /* 80 */ QEMU_CAPS_VIRTIO_BLK_SCSI, /* virtio-blk-pci.scsi */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 4904c879f5..228eae45cb 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -2371,16 +2371,8 @@ qemuBuildFSStr(virDomainFSDefPtr fs, virBufferAsprintf(, ",id=%s%s", QEMU_FSDEV_HOST_PREFIX, fs->info.alias); virBufferAsprintf(, ",path=%s", fs->src->path); -if (fs->readonly) { -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_FSDEV_READONLY)) { -virBufferAddLit(, ",readonly"); -} else { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("readonly filesystem is not supported by this " - "QEMU binary")); -goto error; -} -} +if (fs->readonly) +virBufferAddLit(, ",readonly"); if (virBufferCheckError() < 0) goto error; diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 58208d3f3b..f9d7babc98 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -28,7 +28,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index d6183e4009..da4cf265d4 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -28,7 +28,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index 4af8078a56..cbf81f0f05 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -28,7 +28,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index 6bd1dcfb99..306fc30895 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -28,7 +28,6 @@ - diff --git
[libvirt] [libvirt PATCH v2 11/44] Deprecate QEMU_CAPS_NO_USER_CONFIG
Implied by QEMU >= 1.2.0. Delete this one first, because QEMU_CAPS_NODEFCONFIG is only used when QEMU_CAPS_NO_USER_CONFIG is unsupported. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c | 5 + tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml| 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml| 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvdata/aarch64-aavmf-virtio-mmio.args| 2 +- tests/qemuxml2argvdata/aarch64-acpi-uefi.args| 1 + [ ... etc ... ] tests/qemuxml2argvdata/watchdog.args | 1 + tests/qemuxml2argvdata/x86-kvm-32-on-64.args | 1 + 635 files changed, 609 insertions(+), 202 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 52142d4029..421d803ead 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3656,7 +3656,6 @@ virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV_WRITEOUT); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_IOTUNE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_WAKEUP); -virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_USER_CONFIG); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NETDEV_BRIDGE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_SECCOMP_SANDBOX); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DTB); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index deb6261e0a..bdbbad8d6e 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -178,7 +178,7 @@ typedef enum { QEMU_CAPS_BLOCKJOB_ASYNC, /* new block-job-cancel, block-stream */ QEMU_CAPS_SCSI_CD, /* -device scsi-cd */ QEMU_CAPS_IDE_CD, /* -device ide-cd */ -QEMU_CAPS_NO_USER_CONFIG, /* -no-user-config */ +X_QEMU_CAPS_NO_USER_CONFIG, /* -no-user-config */ /* 95 */ QEMU_CAPS_HDA_MICRO, /* -device hda-micro */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 73b5ad244b..59496d32b5 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -10052,10 +10052,7 @@ qemuBuildCommandLine(virQEMUDriverPtr driver, } /* Disable global config files and default devices */ -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_USER_CONFIG)) -virCommandAddArg(cmd, "-no-user-config"); -else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NODEFCONFIG)) -virCommandAddArg(cmd, "-nodefconfig"); +virCommandAddArg(cmd, "-no-user-config"); virCommandAddArg(cmd, "-nodefaults"); if (qemuBuildSgaCommandLine(cmd, def, qemuCaps) < 0) diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 46b88f218e..8ded417088 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -56,7 +56,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index 47ac2eaf2d..6fcc7f1c57
[libvirt] [libvirt PATCH v2 13/44] Deprecate QEMU_CAPS_DRIVE_SERIAL
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c | 20 tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml| 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml| 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - .../disk-drive-network-tlsx509-vxhs.args | 6 +++--- tests/qemuxml2argvdata/disk-drive-network-vxhs.args | 2 +- tests/qemuxml2argvdata/disk-scsi-disk-wwn.args | 2 +- tests/qemuxml2argvtest.c | 8 +++- 32 files changed, 17 insertions(+), 49 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index c06ec422f1..b4ead4aeff 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3635,7 +3635,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_SERIAL); virQEMUCapsSet(qemuCaps, QEMU_CAPS_SDL); virQEMUCapsSet(qemuCaps, QEMU_CAPS_RTC); virQEMUCapsSet(qemuCaps, QEMU_CAPS_VHOST_NET); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 8262320a92..9d0b6878b7 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -73,7 +73,7 @@ typedef enum { X_QEMU_CAPS_0_10, /* features added in qemu-0.10.0 or later */ X_QEMU_CAPS_PCIDEVICE, /* PCI device assignment supported */ X_QEMU_CAPS_MEM_PATH, /* mmap'ped guest backing supported */ -QEMU_CAPS_DRIVE_SERIAL, /* -driver serial= available */ +X_QEMU_CAPS_DRIVE_SERIAL, /* -driver serial= available */ /* 20 */ X_QEMU_CAPS_XEN_DOMID, /* -xen-domid */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 8140b200e3..422f8f2546 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1340,14 +1340,12 @@ qemuCheckDiskConfig(virDomainDiskDefPtr disk, if (qemuCaps) { if (disk->serial && -virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_SERIAL)) { -if (disk->bus == VIR_DOMAIN_DISK_BUS_SCSI && -disk->device == VIR_DOMAIN_DISK_DEVICE_LUN) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("scsi-block 'lun' devices do not support the " - "serial property")); -return -1; -} +disk->bus == VIR_DOMAIN_DISK_BUS_SCSI && +disk->device == VIR_DOMAIN_DISK_DEVICE_LUN) { +virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("scsi-block 'lun' devices do not support the " + "serial property")); +return -1; } if (disk->cachemode == VIR_DOMAIN_DISK_CACHE_DIRECTSYNC && @@ -1685,7 +1683,6 @@ qemuBuildDiskFrontendAttributeErrorPolicy(virDomainDiskDefPtr disk, static void qemuBuildDiskFrontendAttributes(virDomainDiskDefPtr disk, -virQEMUCapsPtr qemuCaps, virBufferPtr buf) { /* generate geometry command string */ @@ -1702,8 +1699,7 @@ qemuBuildDiskFrontendAttributes(virDomainDiskDefPtr disk, virDomainDiskGeometryTransTypeToString(disk->geometry.trans)); } -if (disk->serial && -virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_SERIAL)) { +if (disk->serial) { virBufferAddLit(buf,
[libvirt] [libvirt PATCH v2 21/44] Deprecate QEMU_CAPS_NAME_PROCESS
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 3 +-- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - 28 files changed, 2 insertions(+), 29 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b98563d441..e78a5edbc2 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3635,7 +3635,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_NAME_PROCESS); virQEMUCapsSet(qemuCaps, QEMU_CAPS_SMBIOS_TYPE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_VGA_NONE); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_AIO); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 8238b4070d..a0bc7d75cc 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -106,7 +106,7 @@ typedef enum { /* 40 */ X_QEMU_CAPS_FSDEV, /* -fstype filesystem passthrough */ QEMU_CAPS_NESTING, /* -enable-nesting (SVM/VMX) */ -QEMU_CAPS_NAME_PROCESS, /* Is -name process= available */ +X_QEMU_CAPS_NAME_PROCESS, /* Is -name process= available */ X_QEMU_CAPS_DRIVE_READONLY, /* -drive readonly=on|off */ QEMU_CAPS_SMBIOS_TYPE, /* Is -smbios type= available */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 2a4c261384..c17676c943 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7067,8 +7067,7 @@ qemuBuildNameCommandLine(virCommandPtr cmd, virQEMUBuildBufferEscapeComma(, def->name); -if (cfg->setProcessName && -virQEMUCapsGet(qemuCaps, QEMU_CAPS_NAME_PROCESS)) +if (cfg->setProcessName) virBufferAsprintf(, ",process=qemu:%s", def->name); if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NAME_DEBUG_THREADS)) diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 770d0df191..b03e0db346 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -7,7 +7,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml index cd093fd75c..cc80ca13d2 100644 --- a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml @@ -7,7 +7,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml index bfae3e804d..5799f1ae3b 100644 --- a/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml @@ -7,7 +7,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml index 81044e9e7c..a8197113c2 100644 --- a/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml @@ -7,7 +7,6 @@ - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml index b44373b5d6..8137ac7def 100644 --- a/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml @@ -4,7 +4,6 @@ 0 - diff --git a/tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml
[libvirt] [libvirt PATCH v2 14/44] Deprecate QEMU_CAPS_SDL
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 4 +--- src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 9 + tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 4 ++-- 29 files changed, 5 insertions(+), 39 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index b4ead4aeff..63eb1a5768 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3635,7 +3635,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_SDL); virQEMUCapsSet(qemuCaps, QEMU_CAPS_RTC); virQEMUCapsSet(qemuCaps, QEMU_CAPS_VHOST_NET); virQEMUCapsSet(qemuCaps, QEMU_CAPS_NODEFCONFIG); @@ -4693,8 +4692,7 @@ virQEMUCapsFillDomainDeviceGraphicsCaps(virQEMUCapsPtr qemuCaps, { dev->supported = true; -if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SDL)) -VIR_DOMAIN_CAPS_ENUM_SET(dev->type, VIR_DOMAIN_GRAPHICS_TYPE_SDL); +VIR_DOMAIN_CAPS_ENUM_SET(dev->type, VIR_DOMAIN_GRAPHICS_TYPE_SDL); if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_VNC)) VIR_DOMAIN_CAPS_ENUM_SET(dev->type, VIR_DOMAIN_GRAPHICS_TYPE_VNC); if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SPICE)) diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 9d0b6878b7..71bea5a623 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -85,7 +85,7 @@ typedef enum { /* 25 */ X_QEMU_CAPS_BALLOON, /* -balloon available */ X_QEMU_CAPS_DEVICE, /* Is the -device arg available */ -QEMU_CAPS_SDL, /* Is the new -sdl arg available */ +X_QEMU_CAPS_SDL, /* Is the new -sdl arg available */ X_QEMU_CAPS_SMP_TOPOLOGY, /* -smp has sockets/cores/threads */ X_QEMU_CAPS_NETDEV, /* -netdev flag & netdev_add/remove */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 422f8f2546..6851bd7bcf 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -8134,18 +8134,11 @@ qemuBuildGraphicsSPICECommandLine(virQEMUDriverConfigPtr cfg, static int qemuBuildGraphicsCommandLine(virQEMUDriverConfigPtr cfg, virCommandPtr cmd, - virDomainDefPtr def, virQEMUCapsPtr qemuCaps, virDomainGraphicsDefPtr graphics) { switch (graphics->type) { case VIR_DOMAIN_GRAPHICS_TYPE_SDL: -if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SDL)) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("sdl not supported by '%s'"), def->emulator); -return -1; -} - if (graphics->data.sdl.xauth) virCommandAddEnvPair(cmd, "XAUTHORITY", graphics->data.sdl.xauth); if (graphics->data.sdl.display) @@ -10109,7 +10102,7 @@ qemuBuildCommandLine(virQEMUDriverPtr driver, goto error; for (i = 0; i < def->ngraphics; ++i) { -if (qemuBuildGraphicsCommandLine(cfg, cmd, def, qemuCaps, +if (qemuBuildGraphicsCommandLine(cfg, cmd, qemuCaps, def->graphics[i]) < 0) goto error; } diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 1b09d41083..4c10ccfa10 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++
[libvirt] [libvirt PATCH v2 12/44] Deprecate QEMU_CAPS_MEM_PATH
Implied by QEMU >= 1.2.0. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 12 ++ tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 28 +++--- 29 files changed, 17 insertions(+), 51 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 421d803ead..c06ec422f1 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3635,7 +3635,6 @@ static qemuMonitorCallbacks callbacks = { static void virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { -virQEMUCapsSet(qemuCaps, QEMU_CAPS_MEM_PATH); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_SERIAL); virQEMUCapsSet(qemuCaps, QEMU_CAPS_SDL); virQEMUCapsSet(qemuCaps, QEMU_CAPS_RTC); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index bdbbad8d6e..8262320a92 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -72,7 +72,7 @@ typedef enum { X_QEMU_CAPS_VGA, /* Is -vga avail */ X_QEMU_CAPS_0_10, /* features added in qemu-0.10.0 or later */ X_QEMU_CAPS_PCIDEVICE, /* PCI device assignment supported */ -QEMU_CAPS_MEM_PATH, /* mmap'ped guest backing supported */ +X_QEMU_CAPS_MEM_PATH, /* mmap'ped guest backing supported */ QEMU_CAPS_DRIVE_SERIAL, /* -driver serial= available */ /* 20 */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 59496d32b5..8140b200e3 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7445,7 +7445,6 @@ qemuBuildSmpCommandLine(virCommandPtr cmd, static int qemuBuildMemPathStr(virQEMUDriverConfigPtr cfg, const virDomainDef *def, -virQEMUCapsPtr qemuCaps, virCommandPtr cmd) { const long system_page_size = virGetSystemPageSizeKB(); @@ -7464,13 +7463,6 @@ qemuBuildMemPathStr(virQEMUDriverConfigPtr cfg, if (def->mem.hugepages[0].size == system_page_size) return 0; -if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MEM_PATH)) { -virReportError(VIR_ERR_INTERNAL_ERROR, - _("hugepage backing not supported by '%s'"), - def->emulator); -return -1; -} - if (qemuGetDomainHupageMemPath(def, cfg, def->mem.hugepages[0].size, _path) < 0) return -1; @@ -7515,7 +7507,7 @@ qemuBuildMemCommandLine(virCommandPtr cmd, * the hugepages and no numa node is specified. */ if (!virDomainNumaGetNodeCount(def->numa) && -qemuBuildMemPathStr(cfg, def, qemuCaps, cmd) < 0) +qemuBuildMemPathStr(cfg, def, cmd) < 0) return -1; if (def->mem.locked && !virQEMUCapsGet(qemuCaps, QEMU_CAPS_REALTIME_MLOCK)) { @@ -7645,7 +7637,7 @@ qemuBuildNumaArgStr(virQEMUDriverConfigPtr cfg, } if (!needBackend && -qemuBuildMemPathStr(cfg, def, qemuCaps, cmd) < 0) +qemuBuildMemPathStr(cfg, def, cmd) < 0) goto cleanup; for (i = 0; i < ncells; i++) { diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 8ded417088..891cb25e8b 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -4,7 +4,6 @@ 0 - diff --git a/tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml
[libvirt] [libvirt PATCH v2 09/44] Remove qemuDomainSupportsNetdev
Now that we assume QEMU_CAPS_NETDEV, the only thing left to check is whether we need to use the legacy -net syntax because of a non-conforming armchitecture. Signed-off-by: Ján Tomko--- src/qemu/qemu_command.c | 20 +--- src/qemu/qemu_domain.c| 10 -- src/qemu/qemu_domain.h| 4 src/qemu/qemu_hotplug.c | 2 +- src/qemu/qemu_interface.c | 2 +- 5 files changed, 7 insertions(+), 31 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 05cc4903a4..4e8c4a7bd4 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -8217,7 +8217,7 @@ qemuBuildVhostuserCommandLine(virQEMUDriverPtr driver, unsigned int queues = net->driver.virtio.queues; char *nic = NULL; -if (!qemuDomainSupportsNetdev(def, qemuCaps, net)) { +if (!qemuDomainSupportsNicdev(def, net)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Netdev support unavailable")); goto error; @@ -8552,23 +8552,14 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver, goto cleanup; } -/* Possible combinations: - * - * 1. Old way: -net nic,model=e1000,vlan=1 -net tap,vlan=1 - * 2. Semi-new: -device e1000,vlan=1-net tap,vlan=1 - * 3. Best way: -netdev type=tap,id=netdev1 -device e1000,id=netdev1 - * - * NB, no support for -netdev without use of -device - */ -if (qemuDomainSupportsNetdev(def, qemuCaps, net)) { +if (qemuDomainSupportsNicdev(def, net)) { if (!(host = qemuBuildHostNetStr(net, driver, ',', vlan, tapfdName, tapfdSize, vhostfdName, vhostfdSize))) goto cleanup; virCommandAddArgList(cmd, "-netdev", host, NULL); -} -if (qemuDomainSupportsNicdev(def, net)) { + if (!(nic = qemuBuildNicDevStr(def, net, vlan, bootindex, vhostfdSize, qemuCaps))) goto cleanup; @@ -8577,8 +8568,7 @@ qemuBuildInterfaceCommandLine(virQEMUDriverPtr driver, if (!(nic = qemuBuildNicStr(net, "nic,", vlan))) goto cleanup; virCommandAddArgList(cmd, "-net", nic, NULL); -} -if (!qemuDomainSupportsNetdev(def, qemuCaps, net)) { + if (!(host = qemuBuildHostNetStr(net, driver, ',', vlan, tapfdName, tapfdSize, @@ -8658,7 +8648,7 @@ qemuBuildNetCommandLine(virQEMUDriverPtr driver, int vlan; /* VLANs are not used with -netdev, so don't record them */ -if (qemuDomainSupportsNetdev(def, qemuCaps, net)) +if (qemuDomainSupportsNicdev(def, net)) vlan = -1; else vlan = i; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index fab1519969..796984b12d 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -9159,16 +9159,6 @@ qemuDomainSupportsNicdev(virDomainDefPtr def, return true; } -bool -qemuDomainSupportsNetdev(virDomainDefPtr def, - virQEMUCapsPtr qemuCaps ATTRIBUTE_UNUSED, - virDomainNetDefPtr net) -{ -if (!qemuDomainSupportsNicdev(def, net)) -return false; -return true; -} - bool qemuDomainNetSupportsMTU(virDomainNetType type) { diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index ce8f69d336..be9aff180b 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -799,10 +799,6 @@ int qemuDomainRefreshVcpuHalted(virQEMUDriverPtr driver, bool qemuDomainSupportsNicdev(virDomainDefPtr def, virDomainNetDefPtr net); -bool qemuDomainSupportsNetdev(virDomainDefPtr def, - virQEMUCapsPtr qemuCaps, - virDomainNetDefPtr net); - bool qemuDomainNetSupportsMTU(virDomainNetType type); int qemuDomainSetPrivatePaths(virQEMUDriverPtr driver, diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index c145c42bcd..8aacd8376f 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -956,7 +956,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, queueSize = net->driver.virtio.queues; if (!queueSize) queueSize = 1; -if (!qemuDomainSupportsNetdev(vm->def, priv->qemuCaps, net)) { +if (!qemuDomainSupportsNicdev(vm->def, net)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Netdev support unavailable")); goto cleanup; diff --git a/src/qemu/qemu_interface.c b/src/qemu/qemu_interface.c index cebb490221..24c0174bf9 100644 --- a/src/qemu/qemu_interface.c +++ b/src/qemu/qemu_interface.c @@ -646,7 +646,7 @@ qemuInterfaceOpenVhostNet(virDomainDefPtr def, * option), don't try to open the device.
[libvirt] [libvirt PATCH v2 07/44] Clean up qemuDomainAttachNetDevice
Now that we assume -netdev support, we no longer set the VLAN or need the hostPlugged bool. Signed-off-by: Ján Tomko--- src/qemu/qemu_hotplug.c | 42 +- 1 file changed, 13 insertions(+), 29 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index d2e00516e8..c145c42bcd 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -825,7 +825,6 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, char *nicstr = NULL; char *netstr = NULL; int ret = -1; -int vlan; bool releaseaddr = false; bool iface_connected = false; virDomainNetType actualType; @@ -836,7 +835,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, char *charDevAlias = NULL; bool charDevPlugged = false; bool netdevPlugged = false; -bool hostPlugged = false; +char *netdev_name; /* preallocate new slot for device */ if (VIR_REALLOC_N(vm->def->nets, vm->def->nnets + 1) < 0) @@ -1029,7 +1028,6 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, releaseaddr = true; -vlan = -1; if (VIR_ALLOC_N(tapfdName, tapfdSize) < 0 || VIR_ALLOC_N(vhostfdName, vhostfdSize) < 0) goto cleanup; @@ -1078,7 +1076,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, for (i = 0; i < vhostfdSize; i++) VIR_FORCE_CLOSE(vhostfd[i]); -if (!(nicstr = qemuBuildNicDevStr(vm->def, net, vlan, 0, +if (!(nicstr = qemuBuildNicDevStr(vm->def, net, -1, 0, queueSize, priv->qemuCaps))) goto try_remove; @@ -1169,31 +1167,17 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, goto cleanup; virErrorPreserveLast(); -if (vlan < 0) { -char *netdev_name; -if (virAsprintf(_name, "host%s", net->info.alias) >= 0) { -qemuDomainObjEnterMonitor(driver, vm); -if (charDevPlugged && -qemuMonitorDetachCharDev(priv->mon, charDevAlias) < 0) -VIR_WARN("Failed to remove associated chardev %s", charDevAlias); -if (netdevPlugged && -qemuMonitorRemoveNetdev(priv->mon, netdev_name) < 0) -VIR_WARN("Failed to remove network backend for netdev %s", - netdev_name); -ignore_value(qemuDomainObjExitMonitor(driver, vm)); -VIR_FREE(netdev_name); -} -} else { -char *hostnet_name; -if (virAsprintf(_name, "host%s", net->info.alias) >= 0) { -qemuDomainObjEnterMonitor(driver, vm); -if (hostPlugged && -qemuMonitorRemoveHostNetwork(priv->mon, vlan, hostnet_name) < 0) -VIR_WARN("Failed to remove network backend for vlan %d, net %s", - vlan, hostnet_name); -ignore_value(qemuDomainObjExitMonitor(driver, vm)); -VIR_FREE(hostnet_name); -} +if (virAsprintf(_name, "host%s", net->info.alias) >= 0) { +qemuDomainObjEnterMonitor(driver, vm); +if (charDevPlugged && +qemuMonitorDetachCharDev(priv->mon, charDevAlias) < 0) +VIR_WARN("Failed to remove associated chardev %s", charDevAlias); +if (netdevPlugged && +qemuMonitorRemoveNetdev(priv->mon, netdev_name) < 0) +VIR_WARN("Failed to remove network backend for netdev %s", + netdev_name); +ignore_value(qemuDomainObjExitMonitor(driver, vm)); +VIR_FREE(netdev_name); } virErrorRestore(); goto cleanup; -- 2.16.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [libvirt PATCH v2 10/44] Deprecate QEMU_CAPS_MONITOR_JSON
We require QEMU >= 0.15.0, assume every QEMU supports it. Sadly that does not let us trivially drop qemuMonitor's priv->monJSON bool, because of qemuDomainQemuAttach. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 6 +- src/qemu/qemu_driver.c | 18 +++--- src/qemu/qemu_process.c| 2 +- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvdata/aarch64-aavmf-virtio-mmio.args | 2 +- [ ... etc ... ] tests/qemuxml2argvdata/x86-kvm-32-on-64.args | 2 +- tests/qemuxml2argvtest.c | 14 -- 633 files changed, 616 insertions(+), 656 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index f6f9ca9d68..52142d4029 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -3637,7 +3637,6 @@ virQEMUCapsInitQMPBasic(virQEMUCapsPtr qemuCaps) { virQEMUCapsSet(qemuCaps, QEMU_CAPS_MEM_PATH); virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_SERIAL); -virQEMUCapsSet(qemuCaps, QEMU_CAPS_MONITOR_JSON); virQEMUCapsSet(qemuCaps, QEMU_CAPS_SDL); virQEMUCapsSet(qemuCaps, QEMU_CAPS_RTC); virQEMUCapsSet(qemuCaps, QEMU_CAPS_VHOST_NET); diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index a08506b584..deb6261e0a 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -80,7 +80,7 @@ typedef enum { X_QEMU_CAPS_MIGRATE_QEMU_UNIX, /* qemu migration via unix sockets */ X_QEMU_CAPS_CHARDEV, /* Is the new -chardev arg available */ QEMU_CAPS_ENABLE_KVM, /* -enable-kvm flag */ -QEMU_CAPS_MONITOR_JSON, /* JSON mode for monitor */ +X_QEMU_CAPS_MONITOR_JSON, /* JSON mode for monitor */ /* 25 */ X_QEMU_CAPS_BALLOON, /* -balloon available */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 4e8c4a7bd4..73b5ad244b 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1654,15 +1654,11 @@ qemuBuildDiskThrottling(virDomainDiskDefPtr disk, static void qemuBuildDiskFrontendAttributeErrorPolicy(virDomainDiskDefPtr disk, - virQEMUCapsPtr qemuCaps, virBufferPtr buf) { const char *wpolicy = NULL; const char *rpolicy = NULL; -if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MONITOR_JSON)) -return; - if (disk->error_policy) wpolicy = virDomainDiskErrorPolicyTypeToString(disk->error_policy); @@ -1712,7 +1708,7 @@ qemuBuildDiskFrontendAttributes(virDomainDiskDefPtr disk, virBufferEscape(buf, '\\', " ", "%s", disk->serial); } -qemuBuildDiskFrontendAttributeErrorPolicy(disk, qemuCaps, buf); +qemuBuildDiskFrontendAttributeErrorPolicy(disk, buf); } diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 5c31dfdd58..fd08817469 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -2123,19 +2123,15 @@ qemuDomainReboot(virDomainPtr dom, unsigned int flags) if ((!useAgent) || (ret < 0 && (acpiRequested || !flags))) { #if WITH_YAJL -if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_MONITOR_JSON)) { -if (!virQEMUCapsGet(priv->qemuCaps,
[libvirt] [libvirt PATCH v2 08/44] Remove unused qemuDomainNetVLAN
Signed-off-by: Ján Tomko--- src/qemu/qemu_domain.c | 6 -- src/qemu/qemu_domain.h | 2 -- 2 files changed, 8 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 37837c8cf3..fab1519969 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -9192,12 +9192,6 @@ qemuDomainNetSupportsMTU(virDomainNetType type) return false; } -int -qemuDomainNetVLAN(virDomainNetDefPtr def) -{ -return qemuDomainDeviceAliasIndex(>info, "net"); -} - virDomainDiskDefPtr qemuDomainDiskByName(virDomainDefPtr def, diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 21e12f6594..ce8f69d336 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -805,8 +805,6 @@ bool qemuDomainSupportsNetdev(virDomainDefPtr def, bool qemuDomainNetSupportsMTU(virDomainNetType type); -int qemuDomainNetVLAN(virDomainNetDefPtr def); - int qemuDomainSetPrivatePaths(virQEMUDriverPtr driver, virDomainObjPtr vm); -- 2.16.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [libvirt PATCH v2 06/44] Deprecate QEMU_CAPS_NETDEV
This makes qemuDomainSupportsNetdev identical to qemuDomainSupportsNicdev and leaves some code in qemuDomainAttachNetDevice to be cleaned up later. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_domain.c | 4 +- src/qemu/qemu_hotplug.c| 120 +--- src/qemu/qemu_process.c| 6 - tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - .../aarch64-aavmf-virtio-mmio.args | 4 +- tests/qemuxml2argvdata/aarch64-kvm-32-on-64.args | 4 +- .../aarch64-video-virtio-gpu-pci.args | 6 +- .../aarch64-virt-2.6-virtio-pci-default.args | 5 +- .../qemuxml2argvdata/aarch64-virt-default-nic.args | 4 +- tests/qemuxml2argvdata/aarch64-virt-virtio.args| 4 +- .../aarch64-virtio-pci-default.args| 5 +- .../aarch64-virtio-pci-manual-addresses.args | 10 +- tests/qemuxml2argvdata/arm-vexpressa9-virtio.args | 4 +- tests/qemuxml2argvdata/arm-virt-virtio.args| 4 +- tests/qemuxml2argvdata/boot-complex-bootindex.args | 11 +- tests/qemuxml2argvdata/boot-complex.args | 10 +- tests/qemuxml2argvdata/boot-order.args | 6 +- tests/qemuxml2argvdata/boot-strict.args| 11 +- tests/qemuxml2argvdata/controller-order.args | 5 +- tests/qemuxml2argvdata/disk-copy_on_read.args | 6 +- tests/qemuxml2argvdata/disk-ioeventfd.args | 4 +- tests/qemuxml2argvdata/event_idx.args | 6 +- tests/qemuxml2argvdata/graphics-spice-timeout.args | 5 +- .../qemuxml2argvdata/intel-iommu-caching-mode.args | 5 +- .../machine-loadparm-multiple-disks-nets-s390.args | 11 +- .../machine-loadparm-net-s390.args | 6 +- tests/qemuxml2argvdata/net-client.args | 5 +- tests/qemuxml2argvdata/net-eth-hostip.args | 5 +- tests/qemuxml2argvdata/net-eth-ifname.args | 5 +- tests/qemuxml2argvdata/net-eth-names.args | 9 +- tests/qemuxml2argvdata/net-eth.args| 5 +- tests/qemuxml2argvdata/net-mcast.args | 5 +- tests/qemuxml2argvdata/net-server.args | 5 +- tests/qemuxml2argvdata/net-udp.args| 6 +- tests/qemuxml2argvdata/net-user.args | 5 +- tests/qemuxml2argvdata/net-virtio-ccw.args | 10 +- tests/qemuxml2argvdata/net-virtio-device.args | 6 +- .../net-virtio-disable-offloads.args | 4 +- .../qemuxml2argvdata/net-virtio-rxtxqueuesize.args | 6 +- tests/qemuxml2argvdata/net-virtio-s390.args| 4 +- tests/qemuxml2argvdata/net-virtio.args | 5 +- tests/qemuxml2argvdata/pci-bridge.args | 151 +++- tests/qemuxml2argvdata/pci-expander-bus.args | 151 +++- tests/qemuxml2argvdata/pci-rom.args| 12 +- tests/qemuxml2argvdata/pcie-expander-bus.args | 155 - tests/qemuxml2argvdata/q35-pci-force-address.args | 5 +- tests/qemuxml2argvdata/user-aliases.args | 18 +-- tests/qemuxml2argvdata/virtio-lun.args | 5 +- tests/qemuxml2argvdata/virtio-options.args | 6 +- tests/qemuxml2argvtest.c | 20 +-- tests/qemuxml2xmltest.c| 8 +- 77 files changed, 454 insertions(+), 456 deletions(-)
[libvirt] [libvirt PATCH v2 05/44] Deprecate QEMU_CAPS_PCI_MULTIFUNCTION
Supported since QEMU 0.13, but we require QEMU 0.15. Signed-off-by: Ján Tomko--- src/qemu/qemu_capabilities.c | 1 - src/qemu/qemu_capabilities.h | 2 +- src/qemu/qemu_command.c| 15 -- tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_1.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.1.1.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.10.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.11.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.ppc64.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.s390x.xml | 1 - tests/qemucapabilitiesdata/caps_2.12.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.4.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.5.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.aarch64.xml | 1 - tests/qemucapabilitiesdata/caps_2.6.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.6.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.7.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.7.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.8.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.8.0.x86_64.xml | 1 - tests/qemucapabilitiesdata/caps_2.9.0.ppc64.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.s390x.xml| 1 - tests/qemucapabilitiesdata/caps_2.9.0.x86_64.xml | 1 - tests/qemuxml2argvtest.c | 56 -- tests/qemuxml2xmltest.c| 27 ++- 30 files changed, 14 insertions(+), 112 deletions(-) diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index f427cfdeaa..19294a588a 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1112,7 +1112,6 @@ static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioBalloon[] = { }; static struct virQEMUCapsStringFlags virQEMUCapsObjectPropsVirtioBlk[] = { -{ "multifunction", QEMU_CAPS_PCI_MULTIFUNCTION }, { "bootindex", QEMU_CAPS_BOOTINDEX }, { "ioeventfd", QEMU_CAPS_VIRTIO_IOEVENTFD }, { "event_idx", QEMU_CAPS_VIRTIO_BLK_EVENT_IDX }, diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 2203c28aa0..85b9a68fca 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -132,7 +132,7 @@ typedef enum { X_QEMU_CAPS_DEVICE_QXL_VGA, /* primary qxl device named qxl-vga? */ /* 60 */ -QEMU_CAPS_PCI_MULTIFUNCTION, /* -device multifunction=on|off */ +X_QEMU_CAPS_PCI_MULTIFUNCTION, /* -device multifunction=on|off */ QEMU_CAPS_VIRTIO_IOEVENTFD, /* virtio-{net|blk}-pci.ioeventfd=on */ QEMU_CAPS_SGA, /* Serial Graphics Adapter */ QEMU_CAPS_VIRTIO_BLK_EVENT_IDX, /* virtio-blk-pci.event_idx */ diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index bbd3cd0a7d..05cc4903a4 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -356,21 +356,6 @@ qemuBuildDeviceAddressStr(virBufferPtr buf, goto cleanup; } -if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_PCI_MULTIFUNCTION)) { -if (info->addr.pci.function != 0) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("Only PCI device addresses with function=0 " - "are supported with this QEMU binary")); -goto cleanup; -} -if (info->addr.pci.multi == VIR_TRISTATE_SWITCH_ON) { -virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("'multifunction=on' is not supported with " - "this QEMU binary")); -goto cleanup; -} -} - if (contIsPHB && contTargetIndex > 0) { /* The PCI bus created by a spapr-pci-host-bridge device with * alias 'x' will be called 'x.0' rather than 'x'; however, diff --git a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml index 04c8016490..109fa2adaa 100644 --- a/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_1.5.3.x86_64.xml @@ -29,7 +29,6 @@ - [ ...etc... ] diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 24eb8cbc5b..288de59de1 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -846,7 +846,6 @@ mymain(void) QEMU_CAPS_ENABLE_KVM, QEMU_CAPS_BOOT_MENU, QEMU_CAPS_PIIX3_USB_UHCI, -
[libvirt] [dbus PATCH] APIs should appear in aplhabetical order in all files.
In C and XML files the order is: 1) properties 2) methods 3) signals All of them sorted in their category alphabetically. Signed-off-by: Katerina Koukiou--- data/org.libvirt.Connect.xml | 12 +-- data/org.libvirt.Domain.xml | 54 ++-- src/connect.c| 2 +- src/domain.c | 200 +-- 4 files changed, 134 insertions(+), 134 deletions(-) diff --git a/data/org.libvirt.Connect.xml b/data/org.libvirt.Connect.xml index 5b49ed9..55260cc 100644 --- a/data/org.libvirt.Connect.xml +++ b/data/org.libvirt.Connect.xml @@ -25,12 +25,6 @@ https://libvirt.org/html/libvirt-libvirt-host.html#virConnectGetVersion"/> - - https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectListAllDomains"/> - - - https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainCreateXML"/> @@ -73,6 +67,12 @@ + + https://libvirt.org/html/libvirt-libvirt-domain.html#virConnectListAllDomains"/> + + + https://libvirt.org/html/libvirt-libvirt-network.html#virConnectListAllNetworks"/> diff --git a/data/org.libvirt.Domain.xml b/data/org.libvirt.Domain.xml index 7679018..78378bb 100644 --- a/data/org.libvirt.Domain.xml +++ b/data/org.libvirt.Domain.xml @@ -3,25 +3,25 @@ - + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetName"/> +value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainIsActive"/> - + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetUUIDString"/> +value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetAutostart"/> https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetID"/> - + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetOSType"/> +value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetName"/> - + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainIsActive"/> +value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetOSType"/> https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetState"/> - + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetAutostart"/> +value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetUUIDString"/> - + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetVcpusFlags"/> +value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainCreateWithFlags"/> - - + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetXMLDesc"/> +value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDestroyFlags"/> - - + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainShutdownFlags"/> +value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetVcpusFlags"/> + - + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainDestroyFlags"/> +value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainGetXMLDesc"/> + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainReset"/> - + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainCreateWithFlags"/> - +value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainResume"/> - + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainUndefineFlags"/> +value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainShutdownFlags"/> https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainSuspend"/> - + https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainResume"/> +value="See https://libvirt.org/html/libvirt-libvirt-domain.html#virDomainUndefineFlags"/> + https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [libvirt PATCH v2 02/44] Delete bogus cpu-host-passthrough test
On Thu, 2018-04-05 at 14:22 +0200, Ján Tomko wrote: > We test the same XML for a type='kvm' domain twice, once with > QEMU_CAPS_KVM (expecting success), once without (expecting failure). > > The failure case relies on QEMU_CAPS_MACHINE_OPT not being set, > failing in qemuBuildObsoleteAccelArg. > > Checking a domain-type error message in a cpu test is strange. > Delete the negative test to allow assuming QEMU_CAPS_MACHINE_OPT by > default. > > Signed-off-by: Ján Tomko> --- > tests/qemuxml2argvtest.c | 1 - > 1 file changed, 1 deletion(-) Reviewed-by: Andrea Bolognani -- Andrea Bolognani / Red Hat / Virtualization -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] Race condition between qemuDomainCreate and qemuDomainDestroy
On Fri, Apr 06, 2018 at 06:27 PM +0200, John Ferlanwrote: > On 04/03/2018 07:47 AM, Marc Hartmayer wrote: >> On Tue, Mar 20, 2018 at 11:25 AM +0100, Marc Hartmayer >> wrote: >>> Hi, >>> >>> there is a race condition between 'qemuDomainCreate' and >>> 'qemuDomainDestroy' causing a NULL pointer segmentation fault when >>> accessing priv->monConfig. The race condition can be easily reproduced >>> using gdb. >>> >>> (gdb) set non-stop on >>> # set breakpoint on line 'mon = qemuMonitorOpen(vm, …)' >>> (gdb) b qemu_process.c:1799 >>> # Actually, this second breakpoint is optional but it’s good to see >>> where priv->monConfig is set to NULL >>> # set breakpoint on line priv->monConfig = NULL; >>> (gdb) b qemu_process.c:6589 >>> (gdb) run >>> # continue all threads - just for the case we hit a breakpoint already >>> (gdb) c -a >>> >>> Now start a domain (that is using QEMU) >>> >>> $ virsh start domain >>> >>> The first breakpoint will be hit. Now run in a second shell >>> >>> $ virsh destroy domain >>> >>> The second breakpoint will be hit. Continue the thread where the second >>> breakpoint was hit (for this example this is thread 4) >>> >>> (gdb) thread apply 4 continue >>> >>> Now continue the thread where the first breakpoint was hit. >>> >>> => Segmentation fault because of a NULL pointer dereference at >>>config->value >>> >>> Since I'm not very familiar with that part of the code, I wanted to ask >>> for your advice. >>> >>> Thanks in advance. >>> >>> Beste Grüße / Kind regards >>>Marc Hartmayer >>> >>> IBM Deutschland Research & Development GmbH >>> Vorsitzende des Aufsichtsrats: Martina Koederitz >>> Geschäftsführung: Dirk Wittkopp >>> Sitz der Gesellschaft: Böblingen >>> Registergericht: Amtsgericht Stuttgart, HRB 243294 >> >> Any ideas? >> > > Seeing as no one else has an exact or authoritative answer... > > qemuDomainCreate{XML|WithFlags} (and a few others) will call > qemuProcessBeginJob which calls qemuDomainObjBeginAsyncJob and > qemuDomainObjSetAsyncJobMask which IIUC allows QEMU_JOB_DESTROY > to be run. > > The qemuDomainDestroyFlags calls qemuProcessBeginStopJob which calls > qemuDomainObjBeginJob (e.g. sync job) using QEMU_JOB_DESTROY, which > again IIUC is allowed to happen alongside the Async job because of the > mask setting. > > In the code where you've broken during create, the @vm object lock is > dropped allowing destroy to obtain it. So with the perfect timing and > storm the window of opportunity does exist that the monConfig could be > free'd and thus priv->monConfig set to NULL before or during the create > processing uses it in qemuMonitorOpen. If during the processing, then > obviously the config-> would "appear" to be valid, but it may not > actually be what was passed. > > The fix I believe involves using objects for virDomainChrSourceDef > rather than VIR_ALLOC'd and VIR_FREE'd memory directly. I've put > together a few patches and will post them shortly. Using the patches I > don't see a core, but rather the (I believe) expected "error: internal > error: qemu unexpectedly closed the monitor" > > John > > > Thanks for the fix! -- Beste Grüße / Kind regards Marc Hartmayer IBM Deutschland Research & Development GmbH Vorsitzende des Aufsichtsrats: Martina Koederitz Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 4/4] qemu: Obtain reference on monConfig
On Mon, Apr 09, 2018 at 04:25 PM +0200, Marc Hartmayerwrote: > On Fri, Apr 06, 2018 at 06:53 PM +0200, John Ferlan > wrote: >> Because we allow a QEMU_JOB_DESTROY to occur while we're starting >> up and we drop the @vm lock prior to qemuMonitorOpen, it's possible >> that a domain destroy operation "wins" the race, calls qemuProcessStop >> which will free and reinitialize priv->monConfig. Depending on the >> exact timing either qemuMonitorOpen will be passed a NULL @config >> variable or it will be using free'd (and possibly reclaimed) memory >> as the @config parameter - neither of which is good. >> >> Resolve this by localizing the @monConfig, taking an extra reference, >> and then once we get the @vm lock again removing our reference since >> we are done with it. >> >> Signed-off-by: John Ferlan >> --- >> src/qemu/qemu_process.c | 6 +- >> 1 file changed, 5 insertions(+), 1 deletion(-) >> >> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c >> index a8dab92dd6..988c6b1537 100644 >> --- a/src/qemu/qemu_process.c >> +++ b/src/qemu/qemu_process.c >> @@ -1776,6 +1776,7 @@ qemuConnectMonitor(virQEMUDriverPtr driver, >> virDomainObjPtr vm, int asyncJob, >> qemuDomainObjPrivatePtr priv = vm->privateData; >> qemuMonitorPtr mon = NULL; >> unsigned long long timeout = 0; >> +virDomainChrSourceDefPtr monConfig; >> >> if (qemuSecuritySetDaemonSocketLabel(driver->securityManager, vm->def) >> < 0) { >> VIR_ERROR(_("Failed to set security context for monitor for %s"), >> @@ -1794,10 +1795,12 @@ qemuConnectMonitor(virQEMUDriverPtr driver, >> virDomainObjPtr vm, int asyncJob, >> virObjectRef(vm); >> >> ignore_value(virTimeMillisNow(>monStart)); >> +monConfig = priv->monConfig; >> +virObjectRef(monConfig); >> virObjectUnlock(vm); >> >> mon = qemuMonitorOpen(vm, >> - priv->monConfig, >> + monConfig, >>priv->monJSON, >>timeout, >>, >> @@ -1813,6 +1816,7 @@ qemuConnectMonitor(virQEMUDriverPtr driver, >> virDomainObjPtr vm, int asyncJob, >> >> virObjectLock(vm); >> virObjectUnref(vm); >> +virObjectUnref(monConfig); > > Only for consistency: I would first unref @monConfig and then do the > unref for @vm. With this change: Reviewed-by: Marc Hartmayer > >> priv->monStart = 0; >> >> if (!virDomainObjIsActive(vm)) { >> -- >> 2.13.6 >> >> -- >> libvir-list mailing list >> libvir-list@redhat.com >> https://www.redhat.com/mailman/listinfo/libvir-list >> > -- > Beste Grüße / Kind regards >Marc Hartmayer > > IBM Deutschland Research & Development GmbH > Vorsitzende des Aufsichtsrats: Martina Koederitz > Geschäftsführung: Dirk Wittkopp > Sitz der Gesellschaft: Böblingen > Registergericht: Amtsgericht Stuttgart, HRB 243294 -- Beste Grüße / Kind regards Marc Hartmayer IBM Deutschland Research & Development GmbH Vorsitzende des Aufsichtsrats: Martina Koederitz Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 3/4] conf: Convert virDomainChrSourceDefNew to return object
On Fri, Apr 06, 2018 at 06:53 PM +0200, John Ferlanwrote: > Let's use object referencing to handle the ChrSourceDef. A subsequent > patch then can allow the monConfig to take an extra reference before > dropping the domain lock to then ensure nothing free's the memory that > needs to be used. > > Signed-off-by: John Ferlan > --- > src/conf/domain_conf.c | 33 ++--- > 1 file changed, 30 insertions(+), 3 deletions(-) > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index fd57364cd4..b4c5de8b33 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -2260,8 +2260,10 @@ virDomainChrSourceDefCopy(virDomainChrSourceDefPtr > dest, > return 0; > } > […snip…] > + > +VIR_ONCE_GLOBAL_INIT(virDomainChrSourceDef); > + > virDomainChrSourceDefPtr > virDomainChrSourceDefNew(virDomainXMLOptionPtr xmlopt) > { > virDomainChrSourceDefPtr def = NULL; > > -if (VIR_ALLOC(def) < 0) > +if (virDomainChrSourceDefInitialize() < 0) > +return NULL; > + > +if (!(def = virObjectNew(virDomainChrSourceDefClass))) > return NULL; > > if (xmlopt && xmlopt->privateData.chrSourceNew && !(def->privateData = xmlopt->privateData.chrSourceNew())) VIR_FREE(def); ^^ Replace it with virDomainChrSourceDefFree(def) or virObjectUnref(def). > -- > 2.13.6 > > -- > libvir-list mailing list > libvir-list@redhat.com > https://www.redhat.com/mailman/listinfo/libvir-list > Otherwise, Reviewed-by: Marc Hartmayer -- Beste Grüße / Kind regards Marc Hartmayer IBM Deutschland Research & Development GmbH Vorsitzende des Aufsichtsrats: Martina Koederitz Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [libvirt PATCH v2 00/4] Require QEMU 1.5.0
On Thu, 2018-04-05 at 14:22 +0200, Ján Tomko wrote: > v2: > * Change the version from 1.3.0 to 1.5.0 > * Mention this breaks RHEL 6 QEMU and list the versions > in relevant long-term releases > > Some of the patches are very big, available in my repo: > https://repo.or.cz/libvirt/jtomko.git/shortlog/refs/heads/caps_cleanup_v2 > git fetch git://repo.or.cz/libvirt/jtomko.git caps_cleanup_v2: Can you please send snipped versions of the patches to the list, eg. redact the test suite churn but leave the actual code changes intact? At least for those patches where such changes are not trivial and might thus warrant review feedback... -- Andrea Bolognani / Red Hat / Virtualization -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [libvirt PATCH v2 01/44] qemuxml2argvtest: Fix q35-virt-manager capabilities
On Thu, 2018-04-05 at 14:22 +0200, Ján Tomko wrote: > Use QEMU_CAPS_MACHINE_OPT and QEMU_CAPS_MACHINE_VMPORT_OPT > since it specifies . > > Signed-off-by: Ján Tomko> --- > tests/qemuxml2argvdata/q35-virt-manager-basic.args | 2 +- > tests/qemuxml2argvtest.c | 2 ++ > 2 files changed, 3 insertions(+), 1 deletion(-) Kinda weird that we don't just error out if vmport is configured and we clearly have no way of enforcing it. Regardless, Reviewed-by: Andrea Bolognani -- Andrea Bolognani / Red Hat / Virtualization -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH V2 0/8] Remove the legacy xen driver
On Fri, Apr 06, 2018 at 02:44:52PM -0600, Jim Fehlig wrote: > Long overdue removal the old xen driver. The first 3 patches move existing > tests to WITH_LIBXL since we'll want to continue supporting conversion of > the various xen config formats. The remain patches remove the cruft. > > Patch8, new to V2, updates the Xen driver page. > > Jim Fehlig (8): > tests: move xml2sexpr tests to WITH_LIBXL > tests: move sexpr2xml tests to WITH_LIBXL > tests: move xmconfig tests to WITH_LIBXL > Remove xencaps tests and data files > Remove the xend driver > docs: remove mention of legacy Xen driver > spec: remove legacy xen driver > docs: update Xen driver information Reviewed-by: Daniel P. BerrangéJust a question about inline - fine if you choose to address that after merging. Regards, Daniel -- |: https://berrange.com -o-https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o-https://fstop138.berrange.com :| |: https://entangle-photo.org-o-https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 2/4] qemu: Use virDomainChrSourceDefNew for monConfig
On Fri, Apr 06, 2018 at 06:53 PM +0200, John Ferlanwrote: > Rather than VIR_ALLOC, use the New function for allocation. We > already use the Free function anyway. > > Signed-off-by: John Ferlan > --- > src/conf/domain_conf.c | 2 +- > src/conf/domain_conf.h | 3 +++ > src/libvirt_private.syms | 1 + > src/qemu/qemu_domain.c | 2 +- > src/qemu/qemu_process.c | 2 +- > 5 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index caf3f47c63..fd57364cd4 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -12211,7 +12211,7 @@ > virDomainChrSourceDefParseXML(virDomainChrSourceDefPtr def, > } > > > -static virDomainChrSourceDefPtr […snip] With the change suggested by Laine: Reviewed-by: Marc Hartmayer -- Beste Grüße / Kind regards Marc Hartmayer IBM Deutschland Research & Development GmbH Vorsitzende des Aufsichtsrats: Martina Koederitz Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH V2 2/8] tests: move sexpr2xml tests to WITH_LIBXL
On Fri, Apr 06, 2018 at 02:44:54PM -0600, Jim Fehlig wrote: > In preparation of removing the legacy Xen driver, move the > sexpr2xml tests from WITH_XEN to WITH_LIBXL. Even though the > legacy driver will be removed, we'll want to maintain the ability > to convert sexpr to XML. Requires fixing up the tests to account > for different behavior of Xen vs libxl post parse functions. > > There is some test file fallout due to differences in handling > of default values between xend and libxl. > diff --git a/tests/sexpr2xmldata/sexpr2xml-boot-grub.xml > b/tests/sexpr2xmldata/sexpr2xml-boot-grub.xml > index b9a8716b2..4b9f535fc 100644 > --- a/tests/sexpr2xmldata/sexpr2xml-boot-grub.xml > +++ b/tests/sexpr2xmldata/sexpr2xml-boot-grub.xml > @@ -15,7 +15,7 @@ >destroy > > > - > + > > > > @@ -24,6 +24,5 @@ > > > > - For this I wonder if a better solution is actually to make the libxl driver fill in the memballoon device. IIUC, you can't actually turn it off, so all libxl guests will have this regardless. So we should just need to add the element a post-parse callback, and check for unsupported "model" value when starting the guest Regards, Daniel -- |: https://berrange.com -o-https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o-https://fstop138.berrange.com :| |: https://entangle-photo.org-o-https://www.instagram.com/dberrange :| -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 1/4] conf: Use virDomainChrSourceDefNew for vhostuser
On Fri, Apr 06, 2018 at 06:53 PM +0200, John Ferlanwrote: > Rather than using VIR_ALLOC, use the New API since we already > use the virDomainChrSourceDefFree function when done. > > Signed-off-by: John Ferlan > --- > src/conf/domain_conf.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index aacd06a87a..caf3f47c63 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -11138,7 +11138,7 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt, > goto error; > } > > -if (VIR_ALLOC(def->data.vhostuser) < 0) > +if (!(def->data.vhostuser = virDomainChrSourceDefNew(xmlopt))) > goto error; > > def->data.vhostuser->type = VIR_DOMAIN_CHR_TYPE_UNIX; > -- > 2.13.6 > > -- > libvir-list mailing list > libvir-list@redhat.com > https://www.redhat.com/mailman/listinfo/libvir-list > Reviewed-by: Marc Hartmayer -- Beste Grüße / Kind regards Marc Hartmayer IBM Deutschland Research & Development GmbH Vorsitzende des Aufsichtsrats: Martina Koederitz Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 4/4] qemu: Obtain reference on monConfig
On Fri, Apr 06, 2018 at 06:53 PM +0200, John Ferlanwrote: > Because we allow a QEMU_JOB_DESTROY to occur while we're starting > up and we drop the @vm lock prior to qemuMonitorOpen, it's possible > that a domain destroy operation "wins" the race, calls qemuProcessStop > which will free and reinitialize priv->monConfig. Depending on the > exact timing either qemuMonitorOpen will be passed a NULL @config > variable or it will be using free'd (and possibly reclaimed) memory > as the @config parameter - neither of which is good. > > Resolve this by localizing the @monConfig, taking an extra reference, > and then once we get the @vm lock again removing our reference since > we are done with it. > > Signed-off-by: John Ferlan > --- > src/qemu/qemu_process.c | 6 +- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c > index a8dab92dd6..988c6b1537 100644 > --- a/src/qemu/qemu_process.c > +++ b/src/qemu/qemu_process.c > @@ -1776,6 +1776,7 @@ qemuConnectMonitor(virQEMUDriverPtr driver, > virDomainObjPtr vm, int asyncJob, > qemuDomainObjPrivatePtr priv = vm->privateData; > qemuMonitorPtr mon = NULL; > unsigned long long timeout = 0; > +virDomainChrSourceDefPtr monConfig; > > if (qemuSecuritySetDaemonSocketLabel(driver->securityManager, vm->def) < > 0) { > VIR_ERROR(_("Failed to set security context for monitor for %s"), > @@ -1794,10 +1795,12 @@ qemuConnectMonitor(virQEMUDriverPtr driver, > virDomainObjPtr vm, int asyncJob, > virObjectRef(vm); > > ignore_value(virTimeMillisNow(>monStart)); > +monConfig = priv->monConfig; > +virObjectRef(monConfig); > virObjectUnlock(vm); > > mon = qemuMonitorOpen(vm, > - priv->monConfig, > + monConfig, >priv->monJSON, >timeout, >, > @@ -1813,6 +1816,7 @@ qemuConnectMonitor(virQEMUDriverPtr driver, > virDomainObjPtr vm, int asyncJob, > > virObjectLock(vm); > virObjectUnref(vm); > +virObjectUnref(monConfig); Only for consistency: I would first unref @monConfig and then do the unref for @vm. > priv->monStart = 0; > > if (!virDomainObjIsActive(vm)) { > -- > 2.13.6 > > -- > libvir-list mailing list > libvir-list@redhat.com > https://www.redhat.com/mailman/listinfo/libvir-list > -- Beste Grüße / Kind regards Marc Hartmayer IBM Deutschland Research & Development GmbH Vorsitzende des Aufsichtsrats: Martina Koederitz Geschäftsführung: Dirk Wittkopp Sitz der Gesellschaft: Böblingen Registergericht: Amtsgericht Stuttgart, HRB 243294 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [dbus PATCH v2 5/8] Implement Secure property for Connect Interface
On Mon, Apr 09, 2018 at 04:00:55PM +0200, Katerina Koukiou wrote: > Signed-off-by: Katerina Koukiou> --- > data/org.libvirt.Connect.xml | 5 + > src/connect.c| 20 > test/test_connect.py | 1 + > 3 files changed, 26 insertions(+) > > diff --git a/data/org.libvirt.Connect.xml b/data/org.libvirt.Connect.xml > index 84eadb0..10bd6d2 100644 > --- a/data/org.libvirt.Connect.xml > +++ b/data/org.libvirt.Connect.xml > @@ -16,6 +16,11 @@ > value="See > https://libvirt.org/html/libvirt-libvirt-host.html#virConnectGetLibVersion"/> > > + > + +value="See > https://libvirt.org/html/libvirt-libvirt-host.html#virConnectIsSecure > + Note that monitoring of traffic on the dbus message bus is > out of the scope of this property"/> s/dbus/D-Bus/ Reviewed-by: Pavel Hrdina signature.asc Description: PGP signature -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [dbus PATCH v2 4/8] Implement Encrypted property for Connect Interface
On Mon, Apr 09, 2018 at 04:00:54PM +0200, Katerina Koukiou wrote: > Signed-off-by: Katerina Koukiou> --- > data/org.libvirt.Connect.xml | 5 + > src/connect.c| 20 > test/test_connect.py | 1 + > 3 files changed, 26 insertions(+) > > diff --git a/data/org.libvirt.Connect.xml b/data/org.libvirt.Connect.xml > index 0e5c7e2..84eadb0 100644 > --- a/data/org.libvirt.Connect.xml > +++ b/data/org.libvirt.Connect.xml > @@ -3,6 +3,11 @@ > > > > + > + +value="See > https://libvirt.org/html/libvirt-libvirt-host.html#virConnectIsEncrypted > + Note that monitoring of traffic on the dbus message bus is > out of the scope of this property"/> s/dbus/D-Bus/ Reviewed-by: Pavel Hrdina signature.asc Description: PGP signature -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [dbus PATCH v2 1/8] Implement GetCapabilities method for connect Interface
On Mon, Apr 09, 2018 at 04:00:51PM +0200, Katerina Koukiou wrote: > Signed-off-by: Katerina Koukiou> --- > data/org.libvirt.Connect.xml | 5 + > src/connect.c| 23 +++ > test/test_connect.py | 3 +++ > 3 files changed, 31 insertions(+) Reviewed-by: Pavel Hrdina signature.asc Description: PGP signature -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list