Re: [PATCH v7 3/4] qemu: add support for virDomainCoreDumpWithFormat API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Mar 18, 2014 at 07:12:03AM +0000, qiaonuohan@xxxxxxxxxxxxxx wrote:

>  static int qemuDumpToFd(virQEMUDriverPtr driver, virDomainObjPtr vm,
> -                        int fd, enum qemuDomainAsyncJob asyncJob)
> +                        int fd, enum qemuDomainAsyncJob asyncJob,
> +                        const char *dumpformat)
>  {
>      qemuDomainObjPrivatePtr priv = vm->privateData;
>      int ret = -1;
> @@ -3409,7 +3417,20 @@ static int qemuDumpToFd(virQEMUDriverPtr driver, virDomainObjPtr vm,
>      if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
>          return -1;
>  
> -    ret = qemuMonitorDumpToFd(priv->mon, fd);
> +    if (dumpformat) {
> +        ret = qemuMonitorGetDumpGuestMemoryCapability(priv->mon, dumpformat);

What happens when we query support for VIR_DOMAIN_CORE_DUMP_FORMAT_RAW
but run on older QEMU which lacks this capability reporting. It looks
like this code will raise an error, but it should simply call the old
monitor code for this.

> +
> +        if (ret <= 0) {
> +            virReportError(VIR_ERR_INVALID_ARG,
> +                           _("unsupported dumpformat '%s'"), dumpformat);
> +            ret = -1;
> +            goto cleanup;
> +        }
> +    }
> +
> +    ret = qemuMonitorDumpToFd(priv->mon, fd, dumpformat);
> +
> +cleanup:
>      qemuDomainObjExitMonitor(driver, vm);
>  
>      return ret;
> @@ -3420,13 +3441,15 @@ doCoreDump(virQEMUDriverPtr driver,
>             virDomainObjPtr vm,
>             const char *path,
>             virQEMUSaveFormat compress,
> -           unsigned int dump_flags)
> +           unsigned int dump_flags,
> +           unsigned int dumpformat)
>  {
>      int fd = -1;
>      int ret = -1;
>      virFileWrapperFdPtr wrapperFd = NULL;
>      int directFlag = 0;
>      unsigned int flags = VIR_FILE_WRAPPER_NON_BLOCKING;
> +    const char *memory_dump_format = NULL;
>  
>      /* Create an empty file with appropriate ownership.  */
>      if (dump_flags & VIR_DUMP_BYPASS_CACHE) {
> @@ -3450,8 +3473,20 @@ doCoreDump(virQEMUDriverPtr driver,
>          goto cleanup;
>  
>      if (dump_flags & VIR_DUMP_MEMORY_ONLY) {
> -        ret = qemuDumpToFd(driver, vm, fd, QEMU_ASYNC_JOB_DUMP);
> +        if (!(memory_dump_format = qemuDumpFormatTypeToString(dumpformat))) {
> +            virReportError(VIR_ERR_INVALID_ARG,
> +                           _("unknown dumpformat '%d'"), dumpformat);
> +            goto cleanup;
> +        }
> +        ret = qemuDumpToFd(driver, vm, fd, QEMU_ASYNC_JOB_DUMP,
> +                           memory_dump_format);
>      } else {
> +        if (dumpformat != VIR_DOMAIN_CORE_DUMP_FORMAT_RAW) {
> +            virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
> +                           _("kdump-compressed format is only supported with "
> +                             "memory-only dump"));
> +            goto cleanup;
> +        }
>          ret = qemuMigrationToFile(driver, vm, fd, 0, path,
>                                    qemuCompressProgramName(compress), false,
>                                    QEMU_ASYNC_JOB_DUMP);


Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]