]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Make auto dump path generation embed driver aware
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 24 Mar 2020 17:07:19 +0000 (18:07 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 7 Apr 2020 13:26:35 +0000 (15:26 +0200)
So far, libvirt generates the following path for automatic dumps:

  $autoDumpPath/$id-$shortName-$timestamp

where $autoDumpPath is where libvirt stores dumps of guests (e.g.
/var/lib/libvirt/qemu/dump), $id is domain ID and $shortName is
shortened version of domain name. So for instance, the generated
path may look something like this:

  /var/lib/libvirt/qemu/dump/1-QEMUGuest-2020-03-25-10:40:50

While in case of embed driver the following path would be
generated by default:

  $root/lib/libvirt/qemu/dump/1-QEMUGuest-2020-03-25-10:40:50

which is not clashing with other embed drivers, we allow users to
override the default and have all embed drivers use the same
prefix. This can create clashing paths. Fortunately, we can reuse
the approach for machined name generation
(v6.1.0-178-gc9bd08ee35) and include part of hash of the root in
the generated path.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
src/qemu/qemu_driver.c

index 9783c9d27e5910d7e4ad1e2d1add5929c794efef..e8d47a41cdb4114a59d992f6bb668a8b5bdc4818 100644 (file)
@@ -4099,6 +4099,7 @@ static char *
 getAutoDumpPath(virQEMUDriverPtr driver,
                 virDomainObjPtr vm)
 {
+    const char *root = driver->embeddedRoot;
     g_autofree char *domname = virDomainDefGetShortName(vm->def);
     g_autoptr(GDateTime) now = g_date_time_new_now_local();
     g_autofree char *nowstr = NULL;
@@ -4111,6 +4112,11 @@ getAutoDumpPath(virQEMUDriverPtr driver,
 
     nowstr = g_date_time_format(now, "%Y-%m-%d-%H:%M:%S");
 
+    if (root && !STRPREFIX(cfg->autoDumpPath, root)) {
+        g_autofree char * hash = virDomainDriverGenerateRootHash(QEMU_DRIVER_NAME, root);
+        return g_strdup_printf("%s/%s-%s-%s", cfg->autoDumpPath, hash, domname, nowstr);
+    }
+
     return g_strdup_printf("%s/%s-%s", cfg->autoDumpPath, domname, nowstr);
 }