This function is going to be used on other places, so instead of copying code we can just call the function. Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- src/qemu/qemu_domain.c | 59 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 212717c80..286d60761 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -7572,6 +7572,41 @@ qemuDomainGetHostdevPath(virDomainDefPtr def, } +static char * +qemuDomainGetPreservedMountPath(virQEMUDriverConfigPtr cfg, + virDomainObjPtr vm, + const char *mount) +{ + char *path = NULL; + char *tmp; + const char *suffix = mount + strlen(DEVPREFIX); + size_t off; + + if (STREQ(mount, "/dev")) + suffix = "dev"; + + if (virAsprintf(&path, "%s/%s.%s", + cfg->stateDir, vm->def->name, suffix) < 0) + return NULL; + + /* Now consider that @mount is "/dev/blah/blah2". + * @suffix then points to "blah/blah2". However, caller + * expects all the @paths to be the same depth. The + * caller doesn't always do `mkdir -p` but sometimes bare + * `touch`. Therefore fix all the suffixes. */ + off = strlen(path) - strlen(suffix); + + tmp = path + off; + while (*tmp) { + if (*tmp == '/') + *tmp = '.'; + tmp++; + } + + return path; +} + + /** * qemuDomainGetPreservedMounts: * @@ -7628,30 +7663,8 @@ qemuDomainGetPreservedMounts(virQEMUDriverConfigPtr cfg, goto error; for (i = 0; i < nmounts; i++) { - char *tmp; - const char *suffix = mounts[i] + strlen(DEVPREFIX); - size_t off; - - if (STREQ(mounts[i], "/dev")) - suffix = "dev"; - - if (virAsprintf(&paths[i], "%s/%s.%s", - cfg->stateDir, vm->def->name, suffix) < 0) + if (!(paths[i] = qemuDomainGetPreservedMountPath(cfg, vm, mounts[i]))) goto error; - - /* Now consider that mounts[i] is "/dev/blah/blah2". - * @suffix then points to "blah/blah2". However, caller - * expects all the @paths to be the same depth. The - * caller doesn't always do `mkdir -p` but sometimes bare - * `touch`. Therefore fix all the suffixes. */ - off = strlen(paths[i]) - strlen(suffix); - - tmp = paths[i] + off; - while (*tmp) { - if (*tmp == '/') - *tmp = '.'; - tmp++; - } } if (devPath) -- 2.13.0 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list