[libvirt] [PATCH v3 1/2] Optimize machine option to set more options with it

Eric Blake eblake at redhat.com
Tue Apr 2 12:52:57 UTC 2013


On 04/02/2013 04:05 AM, Daniel P. Berrange wrote:
> On Fri, Mar 29, 2013 at 01:22:46PM +0800, Li Zhang wrote:
>> From: Li Zhang <zhlcindy at linux.vnet.ibm.com>
>>
>> Currently, -machine option is used only when dump-guest-core is set.
>>
>> To use options defined in machine option for newer version of QEMU,
>> it needs to use -machine xxx, and to be compatible with older version
>>  -M, this patch addes QEMU_CAPS_MACHINE_OPT capability for newer

s/addes/adds/

>> version which supports -machine option.
>>

> 
> ACK

Pushed, after making some fixes (don't have two spaces in the error
message, smaller scope for the buffer, use faster buffer functions, and
report an error if dump_guest_core is present with the -M form where it
is not supported):

diff --git i/src/qemu/qemu_command.c w/src/qemu/qemu_command.c
index 14be49f..a6d011e 100644
--- i/src/qemu/qemu_command.c
+++ w/src/qemu/qemu_command.c
@@ -5200,8 +5200,6 @@ qemuBuildMachineArgStr(virCommandPtr cmd,
                        const virDomainDefPtr def,
                        virQEMUCapsPtr qemuCaps)
 {
-    virBuffer buf = VIR_BUFFER_INITIALIZER;
-
     /* This should *never* be NULL, since we always provide
      * a machine in the capabilities data for QEMU. So this
      * check is just here as a safety in case the unexpected
@@ -5214,16 +5212,23 @@ qemuBuildMachineArgStr(virCommandPtr cmd,
          * '-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;
+        }
     } else {
+        virBuffer buf = VIR_BUFFER_INITIALIZER;

         virCommandAddArg(cmd, "-machine");
-        virBufferAsprintf(&buf, "%s", def->os.machine);
+        virBufferAdd(&buf, def->os.machine, -1);

         if (def->mem.dump_core) {
             if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DUMP_GUEST_CORE)) {
-                virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                               "%s", _("dump-guest-core is not available "
-                                " with this QEMU binary"));
+                virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                               _("dump-guest-core is not available "
+                                 "with this QEMU binary"));
                 return -1;
             }

@@ -5231,7 +5236,7 @@ qemuBuildMachineArgStr(virCommandPtr cmd,

virDomainMemDumpTypeToString(def->mem.dump_core));
         }

-        virCommandAddArg(cmd, virBufferContentAndReset(&buf));
+        virCommandAddArgBuffer(cmd, &buf);
     }

     return 0;

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130402/b5e75c73/attachment-0001.sig>


More information about the libvir-list mailing list