[PATCH 0/4] Replace virFileMakePath*() with g_mkdir_with_parents()

While reading through glib manual I've noticed there's g_mkdir_with_parents() which does the same as our virFileMakePath() and virFileMakePathWithMode(). Michal Prívozník (4): virfile: Replace virFileMakePathHelper() with g_mkdir_with_parents() lib: Replace virFileMakePathWithMode() with g_mkdir_with_parents() lib: Replace virFileMakePath() with g_mkdir_with_parents() util: Drop virFileMakePath() and virFileMakePathWithMode() src/bhyve/bhyve_driver.c | 6 +-- src/conf/domain_conf.c | 2 +- src/conf/network_conf.c | 2 +- src/conf/virnetworkportdef.c | 2 +- src/conf/virnwfilterbindingobj.c | 2 +- src/conf/virstorageobj.c | 2 +- src/hypervisor/virhostdev.c | 4 +- src/interface/interface_backend_netcf.c | 2 +- src/interface/interface_backend_udev.c | 2 +- src/libvirt_private.syms | 2 - src/libxl/libxl_conf.c | 2 +- src/libxl/libxl_driver.c | 12 ++--- src/locking/lock_daemon.c | 4 +- src/logging/log_daemon.c | 4 +- src/lxc/lxc_container.c | 18 +++---- src/lxc/lxc_controller.c | 4 +- src/lxc/lxc_driver.c | 4 +- src/lxc/lxc_fuse.c | 2 +- src/lxc/lxc_process.c | 2 +- src/network/bridge_driver.c | 12 ++--- src/node_device/node_device_udev.c | 2 +- src/nwfilter/nwfilter_dhcpsnoop.c | 2 +- src/nwfilter/nwfilter_driver.c | 6 +-- src/qemu/qemu_checkpoint.c | 2 +- src/qemu/qemu_domain.c | 2 +- src/qemu/qemu_driver.c | 26 +++++----- src/qemu/qemu_namespace.c | 6 +-- src/qemu/qemu_process.c | 6 +-- src/qemu/qemu_tpm.c | 4 +- src/remote/remote_daemon.c | 2 +- src/rpc/virnetsocket.c | 2 +- src/secret/secret_driver.c | 4 +- src/storage/storage_driver.c | 4 +- src/storage/storage_util.c | 2 +- src/util/vircgroupv1.c | 4 +- src/util/vircgroupv2.c | 2 +- src/util/virdaemon.c | 2 +- src/util/virdnsmasq.c | 2 +- src/util/virfile.c | 69 ++----------------------- src/util/virfile.h | 3 -- src/util/virfilecache.c | 2 +- src/util/virlockspace.c | 2 +- src/util/virlog.c | 2 +- src/util/virpidfile.c | 4 +- src/util/virresctrl.c | 2 +- src/vz/vz_driver.c | 2 +- tests/scsihosttest.c | 4 +- tests/securityselinuxlabeltest.c | 4 +- tests/vboxsnapshotxmltest.c | 2 +- tests/vircgroupmock.c | 2 +- tests/virhostdevtest.c | 2 +- tests/virpcimock.c | 12 ++--- tests/virstoragetest.c | 4 +- tools/vsh.c | 2 +- 54 files changed, 110 insertions(+), 178 deletions(-) -- 2.26.2

Our virFileMakePathHelper() does exactly the same as g_mkdir_with_parents() except for printing a debug message. Well, tough luck. Replace the former with the latter. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/util/virfile.c | 47 ++-------------------------------------------- 1 file changed, 2 insertions(+), 45 deletions(-) diff --git a/src/util/virfile.c b/src/util/virfile.c index 5710495bbf..dc6ba8e5c0 100644 --- a/src/util/virfile.c +++ b/src/util/virfile.c @@ -3037,45 +3037,6 @@ int virFileChownFiles(const char *name, } #endif /* WIN32 */ -static int -virFileMakePathHelper(char *path, mode_t mode) -{ - struct stat st; - char *p; - - VIR_DEBUG("path=%s mode=0%o", path, mode); - - if (stat(path, &st) >= 0) { - if (S_ISDIR(st.st_mode)) - return 0; - - errno = ENOTDIR; - return -1; - } - - if (errno != ENOENT) - return -1; - - if ((p = strrchr(path, '/')) == NULL) { - errno = EINVAL; - return -1; - } - - if (p != path) { - *p = '\0'; - - if (virFileMakePathHelper(path, mode) < 0) - return -1; - - *p = '/'; - } - - if (g_mkdir(path, mode) < 0 && errno != EEXIST) - return -1; - - return 0; -} - /** * Creates the given directory with mode 0777 if it's not already existing. * @@ -3092,11 +3053,7 @@ int virFileMakePathWithMode(const char *path, mode_t mode) { - g_autofree char *tmp = NULL; - - tmp = g_strdup(path); - - return virFileMakePathHelper(tmp, mode); + return g_mkdir_with_parents(path, mode); } @@ -3116,7 +3073,7 @@ virFileMakeParentPath(const char *path) } *p = '\0'; - return virFileMakePathHelper(tmp, 0777); + return g_mkdir_with_parents(tmp, 0777); } -- 2.26.2

These functions are identical. Made using this spatch: @@ expression path, mode; @@ - virFileMakePathWithMode(path, mode) + g_mkdir_with_parents(path, mode) Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/interface/interface_backend_netcf.c | 2 +- src/interface/interface_backend_udev.c | 2 +- src/node_device/node_device_udev.c | 2 +- src/nwfilter/nwfilter_dhcpsnoop.c | 2 +- src/nwfilter/nwfilter_driver.c | 6 +++--- src/qemu/qemu_namespace.c | 2 +- src/qemu/qemu_process.c | 4 ++-- src/qemu/qemu_tpm.c | 4 ++-- src/rpc/virnetsocket.c | 2 +- src/secret/secret_driver.c | 4 ++-- src/util/virfile.c | 2 +- src/util/virlockspace.c | 2 +- src/util/virpidfile.c | 2 +- src/vz/vz_driver.c | 2 +- tests/scsihosttest.c | 4 ++-- tools/vsh.c | 2 +- 16 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/interface/interface_backend_netcf.c b/src/interface/interface_backend_netcf.c index e40a4cb108..891271cb35 100644 --- a/src/interface/interface_backend_netcf.c +++ b/src/interface/interface_backend_netcf.c @@ -117,7 +117,7 @@ netcfStateInitialize(bool privileged, driver->stateDir = g_strdup_printf("%s/interface/run", rundir); } - if (virFileMakePathWithMode(driver->stateDir, S_IRWXU) < 0) { + if (g_mkdir_with_parents(driver->stateDir, S_IRWXU) < 0) { virReportSystemError(errno, _("cannot create state directory '%s'"), driver->stateDir); goto error; diff --git a/src/interface/interface_backend_udev.c b/src/interface/interface_backend_udev.c index 6a94a45044..e704400dc1 100644 --- a/src/interface/interface_backend_udev.c +++ b/src/interface/interface_backend_udev.c @@ -1147,7 +1147,7 @@ udevStateInitialize(bool privileged, driver->stateDir = g_strdup_printf("%s/interface/run", rundir); } - if (virFileMakePathWithMode(driver->stateDir, S_IRWXU) < 0) { + if (g_mkdir_with_parents(driver->stateDir, S_IRWXU) < 0) { virReportSystemError(errno, _("cannot create state directory '%s'"), driver->stateDir); goto cleanup; diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c index 09048fb23f..fe25f8235e 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -2031,7 +2031,7 @@ nodeStateInitialize(bool privileged, driver->stateDir = g_strdup_printf("%s/nodedev/run", rundir); } - if (virFileMakePathWithMode(driver->stateDir, S_IRWXU) < 0) { + if (g_mkdir_with_parents(driver->stateDir, S_IRWXU) < 0) { virReportSystemError(errno, _("cannot create state directory '%s'"), driver->stateDir); goto cleanup; diff --git a/src/nwfilter/nwfilter_dhcpsnoop.c b/src/nwfilter/nwfilter_dhcpsnoop.c index e64eb2c7ee..2e7190be1c 100644 --- a/src/nwfilter/nwfilter_dhcpsnoop.c +++ b/src/nwfilter/nwfilter_dhcpsnoop.c @@ -1811,7 +1811,7 @@ virNWFilterSnoopLeaseFileRefresh(void) { int tfd; - if (virFileMakePathWithMode(LEASEFILE_DIR, 0700) < 0) { + if (g_mkdir_with_parents(LEASEFILE_DIR, 0700) < 0) { virReportError(errno, _("mkdir(\"%s\")"), LEASEFILE_DIR); return; } diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c index 1b8e3dbad3..1541c44cf2 100644 --- a/src/nwfilter/nwfilter_driver.c +++ b/src/nwfilter/nwfilter_driver.c @@ -191,7 +191,7 @@ nwfilterStateInitialize(bool privileged, driver->stateDir = g_strdup(RUNSTATEDIR "/libvirt/nwfilter"); - if (virFileMakePathWithMode(driver->stateDir, S_IRWXU) < 0) { + if (g_mkdir_with_parents(driver->stateDir, S_IRWXU) < 0) { virReportSystemError(errno, _("cannot create state directory '%s'"), driver->stateDir); goto error; @@ -224,7 +224,7 @@ nwfilterStateInitialize(bool privileged, driver->configDir = g_strdup(SYSCONFDIR "/libvirt/nwfilter"); - if (virFileMakePathWithMode(driver->configDir, S_IRWXU) < 0) { + if (g_mkdir_with_parents(driver->configDir, S_IRWXU) < 0) { virReportSystemError(errno, _("cannot create config directory '%s'"), driver->configDir); goto error; @@ -232,7 +232,7 @@ nwfilterStateInitialize(bool privileged, driver->bindingDir = g_strdup(RUNSTATEDIR "/libvirt/nwfilter-binding"); - if (virFileMakePathWithMode(driver->bindingDir, S_IRWXU) < 0) { + if (g_mkdir_with_parents(driver->bindingDir, S_IRWXU) < 0) { virReportSystemError(errno, _("cannot create config directory '%s'"), driver->bindingDir); goto error; diff --git a/src/qemu/qemu_namespace.c b/src/qemu/qemu_namespace.c index 60543e845b..f4b4d4d9ec 100644 --- a/src/qemu/qemu_namespace.c +++ b/src/qemu/qemu_namespace.c @@ -985,7 +985,7 @@ qemuNamespaceMknodOne(qemuNamespaceMknodItemPtr data) goto cleanup; } if ((isReg && virFileTouch(data->file, data->sb.st_mode) < 0) || - (isDir && virFileMakePathWithMode(data->file, data->sb.st_mode) < 0)) + (isDir && g_mkdir_with_parents(data->file, data->sb.st_mode) < 0)) goto cleanup; delDevice = true; /* Just create the file here so that code below sets diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 398f63282e..944664ca28 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3937,7 +3937,7 @@ qemuProcessBuildDestroyMemoryPathsImpl(virQEMUDriverPtr driver, if (virFileExists(path)) return 0; - if (virFileMakePathWithMode(path, 0700) < 0) { + if (g_mkdir_with_parents(path, 0700) < 0) { virReportSystemError(errno, _("Unable to create %s"), path); @@ -5164,7 +5164,7 @@ qemuProcessMakeDir(virQEMUDriverPtr driver, virDomainObjPtr vm, const char *path) { - if (virFileMakePathWithMode(path, 0750) < 0) { + if (g_mkdir_with_parents(path, 0750) < 0) { virReportSystemError(errno, _("Cannot create directory '%s'"), path); return -1; } diff --git a/src/qemu/qemu_tpm.c b/src/qemu/qemu_tpm.c index f94cad8230..2635382f81 100644 --- a/src/qemu/qemu_tpm.c +++ b/src/qemu/qemu_tpm.c @@ -95,7 +95,7 @@ qemuTPMEmulatorInitStorage(const char *swtpmStorageDir) int rc = 0; /* allow others to cd into this dir */ - if (virFileMakePathWithMode(swtpmStorageDir, 0711) < 0) { + if (g_mkdir_with_parents(swtpmStorageDir, 0711) < 0) { virReportSystemError(errno, _("Could not create TPM directory %s"), swtpmStorageDir); @@ -276,7 +276,7 @@ qemuTPMEmulatorPrepareHost(virDomainTPMDefPtr tpm, return -1; /* create log dir ... allow 'tss' user to cd into it */ - if (virFileMakePathWithMode(logDir, 0711) < 0) + if (g_mkdir_with_parents(logDir, 0711) < 0) return -1; /* ... and adjust ownership */ diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c index 17aaf86ce3..872b8a3c46 100644 --- a/src/rpc/virnetsocket.c +++ b/src/rpc/virnetsocket.c @@ -700,7 +700,7 @@ int virNetSocketNewConnectUNIX(const char *path, binname = g_path_get_basename(binary); rundir = virGetUserRuntimeDirectory(); - if (virFileMakePathWithMode(rundir, 0700) < 0) { + if (g_mkdir_with_parents(rundir, 0700) < 0) { virReportSystemError(errno, _("Cannot create user runtime directory '%s'"), rundir); diff --git a/src/secret/secret_driver.c b/src/secret/secret_driver.c index 45da09322b..c24aedbe1b 100644 --- a/src/secret/secret_driver.c +++ b/src/secret/secret_driver.c @@ -489,13 +489,13 @@ secretStateInitialize(bool privileged, driver->stateDir = g_strdup_printf("%s/secrets/run", rundir); } - if (virFileMakePathWithMode(driver->configDir, S_IRWXU) < 0) { + if (g_mkdir_with_parents(driver->configDir, S_IRWXU) < 0) { virReportSystemError(errno, _("cannot create config directory '%s'"), driver->configDir); goto error; } - if (virFileMakePathWithMode(driver->stateDir, S_IRWXU) < 0) { + if (g_mkdir_with_parents(driver->stateDir, S_IRWXU) < 0) { virReportSystemError(errno, _("cannot create state directory '%s'"), driver->stateDir); goto error; diff --git a/src/util/virfile.c b/src/util/virfile.c index dc6ba8e5c0..bba0e892ea 100644 --- a/src/util/virfile.c +++ b/src/util/virfile.c @@ -3046,7 +3046,7 @@ int virFileChownFiles(const char *name, int virFileMakePath(const char *path) { - return virFileMakePathWithMode(path, 0777); + return g_mkdir_with_parents(path, 0777); } int diff --git a/src/util/virlockspace.c b/src/util/virlockspace.c index 684a3320ed..f253091f39 100644 --- a/src/util/virlockspace.c +++ b/src/util/virlockspace.c @@ -263,7 +263,7 @@ virLockSpacePtr virLockSpaceNew(const char *directory) goto error; } } else { - if (virFileMakePathWithMode(directory, 0700) < 0) { + if (g_mkdir_with_parents(directory, 0700) < 0) { virReportSystemError(errno, _("Unable to create lockspace %s"), directory); diff --git a/src/util/virpidfile.c b/src/util/virpidfile.c index b4d0059405..4c38ebe500 100644 --- a/src/util/virpidfile.c +++ b/src/util/virpidfile.c @@ -489,7 +489,7 @@ virPidFileConstructPath(bool privileged, } else { rundir = virGetUserRuntimeDirectory(); - if (virFileMakePathWithMode(rundir, 0700) < 0) { + if (g_mkdir_with_parents(rundir, 0700) < 0) { virReportSystemError(errno, _("Cannot create user runtime directory '%s'"), rundir); diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index 0ebcb06234..a9f774afd6 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -4116,7 +4116,7 @@ vzStateInitialize(bool privileged, vz_driver_privileged = privileged; - if (virFileMakePathWithMode(VZ_STATEDIR, S_IRWXU) < 0) { + if (g_mkdir_with_parents(VZ_STATEDIR, S_IRWXU) < 0) { virReportSystemError(errno, _("cannot create state directory '%s'"), VZ_STATEDIR); return VIR_DRV_STATE_INIT_ERROR; diff --git a/tests/scsihosttest.c b/tests/scsihosttest.c index 4b2779eabf..17825bba35 100644 --- a/tests/scsihosttest.c +++ b/tests/scsihosttest.c @@ -87,7 +87,7 @@ create_scsihost(const char *fakesysfsdir, const char *devicepath, } spot--; *spot = '\0'; - if (virFileMakePathWithMode(unique_id_path, 0755) < 0) { + if (g_mkdir_with_parents(unique_id_path, 0755) < 0) { fprintf(stderr, "Unable to make path to '%s'\n", unique_id_path); goto cleanup; } @@ -102,7 +102,7 @@ create_scsihost(const char *fakesysfsdir, const char *devicepath, } spot--; *spot = '\0'; - if (virFileMakePathWithMode(link_path, 0755) < 0) { + if (g_mkdir_with_parents(link_path, 0755) < 0) { fprintf(stderr, "Unable to make path to '%s'\n", link_path); goto cleanup; } diff --git a/tools/vsh.c b/tools/vsh.c index 68f04b2174..8fb033249e 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -2870,7 +2870,7 @@ static void vshReadlineDeinit(vshControl *ctl) { if (ctl->historyfile != NULL) { - if (virFileMakePathWithMode(ctl->historydir, 0755) < 0 && + if (g_mkdir_with_parents(ctl->historydir, 0755) < 0 && errno != EEXIST) { vshError(ctl, _("Failed to create '%s': %s"), ctl->historydir, g_strerror(errno)); -- 2.26.2

Generated using the following spatch: @@ expression path; @@ - virFileMakePath(path) + g_mkdir_with_parents(path, 0777) However, 14 occurrences were not replaced, e.g. in virHostdevManagerNew(). I don't really understand why. Fixed by hand afterwards. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/bhyve/bhyve_driver.c | 6 +++--- src/conf/domain_conf.c | 2 +- src/conf/network_conf.c | 2 +- src/conf/virnetworkportdef.c | 2 +- src/conf/virnwfilterbindingobj.c | 2 +- src/conf/virstorageobj.c | 2 +- src/hypervisor/virhostdev.c | 4 ++-- src/libxl/libxl_conf.c | 2 +- src/libxl/libxl_driver.c | 12 ++++++------ src/locking/lock_daemon.c | 4 ++-- src/logging/log_daemon.c | 4 ++-- src/lxc/lxc_container.c | 18 +++++++++--------- src/lxc/lxc_controller.c | 4 ++-- src/lxc/lxc_driver.c | 4 ++-- src/lxc/lxc_fuse.c | 2 +- src/lxc/lxc_process.c | 2 +- src/network/bridge_driver.c | 12 ++++++------ src/qemu/qemu_checkpoint.c | 2 +- src/qemu/qemu_domain.c | 2 +- src/qemu/qemu_driver.c | 26 +++++++++++++------------- src/qemu/qemu_namespace.c | 4 ++-- src/qemu/qemu_process.c | 2 +- src/remote/remote_daemon.c | 2 +- src/storage/storage_driver.c | 4 ++-- src/storage/storage_util.c | 2 +- src/util/vircgroupv1.c | 4 ++-- src/util/vircgroupv2.c | 2 +- src/util/virdaemon.c | 2 +- src/util/virdnsmasq.c | 2 +- src/util/virfile.c | 4 ++-- src/util/virfilecache.c | 2 +- src/util/virlog.c | 2 +- src/util/virpidfile.c | 2 +- src/util/virresctrl.c | 2 +- tests/securityselinuxlabeltest.c | 4 ++-- tests/vboxsnapshotxmltest.c | 2 +- tests/vircgroupmock.c | 2 +- tests/virhostdevtest.c | 2 +- tests/virpcimock.c | 12 ++++++------ tests/virstoragetest.c | 4 ++-- 40 files changed, 88 insertions(+), 88 deletions(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index d02dc65a9d..8363259d4c 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -385,7 +385,7 @@ bhyveDomainSetAutostart(virDomainPtr domain, int autostart) goto cleanup; if (autostart) { - if (virFileMakePath(BHYVE_AUTOSTART_DIR) < 0) { + if (g_mkdir_with_parents(BHYVE_AUTOSTART_DIR, 0777) < 0) { virReportSystemError(errno, _("cannot create autostart directory %s"), BHYVE_AUTOSTART_DIR); @@ -1265,14 +1265,14 @@ bhyveStateInitialize(bool privileged, if (virBhyveLoadDriverConfig(bhyve_driver->config, SYSCONFDIR "/libvirt/bhyve.conf") < 0) goto cleanup; - if (virFileMakePath(BHYVE_LOG_DIR) < 0) { + if (g_mkdir_with_parents(BHYVE_LOG_DIR, 0777) < 0) { virReportSystemError(errno, _("Failed to mkdir %s"), BHYVE_LOG_DIR); goto cleanup; } - if (virFileMakePath(BHYVE_STATE_DIR) < 0) { + if (g_mkdir_with_parents(BHYVE_STATE_DIR, 0777) < 0) { virReportSystemError(errno, _("Failed to mkdir %s"), BHYVE_STATE_DIR); diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index b731744f04..a918bfe189 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -29351,7 +29351,7 @@ virDomainDefSaveXML(virDomainDefPtr def, if ((configFile = virDomainConfigFile(configDir, def->name)) == NULL) return -1; - if (virFileMakePath(configDir) < 0) { + if (g_mkdir_with_parents(configDir, 0777) < 0) { virReportSystemError(errno, _("cannot create config directory '%s'"), configDir); diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index f32710b781..1b24a900bd 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -2762,7 +2762,7 @@ virNetworkSaveXML(const char *configDir, if ((configFile = virNetworkConfigFile(configDir, def->name)) == NULL) return -1; - if (virFileMakePath(configDir) < 0) { + if (g_mkdir_with_parents(configDir, 0777) < 0) { virReportSystemError(errno, _("cannot create config directory '%s'"), configDir); diff --git a/src/conf/virnetworkportdef.c b/src/conf/virnetworkportdef.c index 21ebbdb054..3923d2aa37 100644 --- a/src/conf/virnetworkportdef.c +++ b/src/conf/virnetworkportdef.c @@ -443,7 +443,7 @@ virNetworkPortDefSaveStatus(virNetworkPortDef *def, virUUIDFormat(def->uuid, uuidstr); - if (virFileMakePath(dir) < 0) + if (g_mkdir_with_parents(dir, 0777) < 0) return -1; if (!(path = virNetworkPortDefConfigFile(dir, uuidstr))) diff --git a/src/conf/virnwfilterbindingobj.c b/src/conf/virnwfilterbindingobj.c index 584721f8b6..2f29670f9f 100644 --- a/src/conf/virnwfilterbindingobj.c +++ b/src/conf/virnwfilterbindingobj.c @@ -160,7 +160,7 @@ virNWFilterBindingObjSave(const virNWFilterBindingObj *obj, if (!(xml = virNWFilterBindingObjFormat(obj))) goto cleanup; - if (virFileMakePath(statusDir) < 0) { + if (g_mkdir_with_parents(statusDir, 0777) < 0) { virReportSystemError(errno, _("cannot create config directory '%s'"), statusDir); diff --git a/src/conf/virstorageobj.c b/src/conf/virstorageobj.c index 6a8874b1fb..69c2c2da36 100644 --- a/src/conf/virstorageobj.c +++ b/src/conf/virstorageobj.c @@ -1777,7 +1777,7 @@ virStoragePoolObjSaveDef(virStorageDriverStatePtr driver, virStoragePoolDefPtr def) { if (!obj->configFile) { - if (virFileMakePath(driver->configDir) < 0) { + if (g_mkdir_with_parents(driver->configDir, 0777) < 0) { virReportSystemError(errno, _("cannot create config directory %s"), driver->configDir); diff --git a/src/hypervisor/virhostdev.c b/src/hypervisor/virhostdev.c index 743aaa84d6..316327f004 100644 --- a/src/hypervisor/virhostdev.c +++ b/src/hypervisor/virhostdev.c @@ -171,7 +171,7 @@ virHostdevManagerNew(void) if (privileged) { hostdevMgr->stateDir = g_strdup(HOSTDEV_STATE_DIR); - if (virFileMakePath(hostdevMgr->stateDir) < 0) { + if (g_mkdir_with_parents(hostdevMgr->stateDir, 0777) < 0) { virReportError(VIR_ERR_OPERATION_FAILED, _("Failed to create state dir '%s'"), hostdevMgr->stateDir); @@ -187,7 +187,7 @@ virHostdevManagerNew(void) old_umask = umask(077); - if (virFileMakePath(hostdevMgr->stateDir) < 0) { + if (g_mkdir_with_parents(hostdevMgr->stateDir, 0777) < 0) { umask(old_umask); virReportError(VIR_ERR_OPERATION_FAILED, _("Failed to create state dir '%s'"), diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index f8db118996..0eceab383c 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -1789,7 +1789,7 @@ libxlDriverConfigInit(libxlDriverConfigPtr cfg) { unsigned int free_mem; - if (virFileMakePath(cfg->logDir) < 0) { + if (g_mkdir_with_parents(cfg->logDir, 0777) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("failed to create log dir '%s': %s"), cfg->logDir, diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 75a8d46af0..fcfcf7c11c 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -721,35 +721,35 @@ libxlStateInitialize(bool privileged, libxl_event_register_callbacks(cfg->ctx, &ev_hooks, libxl_driver); libxl_driver->config = cfg; - if (virFileMakePath(cfg->stateDir) < 0) { + if (g_mkdir_with_parents(cfg->stateDir, 0777) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("failed to create state dir '%s': %s"), cfg->stateDir, g_strerror(errno)); goto error; } - if (virFileMakePath(cfg->libDir) < 0) { + if (g_mkdir_with_parents(cfg->libDir, 0777) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("failed to create lib dir '%s': %s"), cfg->libDir, g_strerror(errno)); goto error; } - if (virFileMakePath(cfg->saveDir) < 0) { + if (g_mkdir_with_parents(cfg->saveDir, 0777) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("failed to create save dir '%s': %s"), cfg->saveDir, g_strerror(errno)); goto error; } - if (virFileMakePath(cfg->autoDumpDir) < 0) { + if (g_mkdir_with_parents(cfg->autoDumpDir, 0777) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("failed to create dump dir '%s': %s"), cfg->autoDumpDir, g_strerror(errno)); goto error; } - if (virFileMakePath(cfg->channelDir) < 0) { + if (g_mkdir_with_parents(cfg->channelDir, 0777) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("failed to create channel dir '%s': %s"), cfg->channelDir, @@ -4543,7 +4543,7 @@ libxlDomainSetAutostart(virDomainPtr dom, int autostart) goto endjob; if (autostart) { - if (virFileMakePath(cfg->autostartDir) < 0) { + if (g_mkdir_with_parents(cfg->autostartDir, 0777) < 0) { virReportSystemError(errno, _("cannot create autostart directory %s"), cfg->autostartDir); diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c index d68c61b099..04038d2668 100644 --- a/src/locking/lock_daemon.c +++ b/src/locking/lock_daemon.c @@ -602,7 +602,7 @@ virLockDaemonExecRestartStatePath(bool privileged, rundir = virGetUserRuntimeDirectory(); old_umask = umask(077); - if (virFileMakePath(rundir) < 0) { + if (g_mkdir_with_parents(rundir, 0777) < 0) { umask(old_umask); return -1; } @@ -993,7 +993,7 @@ int main(int argc, char **argv) { else old_umask = umask(077); VIR_DEBUG("Ensuring run dir '%s' exists", run_dir); - if (virFileMakePath(run_dir) < 0) { + if (g_mkdir_with_parents(run_dir, 0777) < 0) { VIR_ERROR(_("unable to create rundir %s: %s"), run_dir, g_strerror(errno)); ret = VIR_DAEMON_ERR_RUNDIR; diff --git a/src/logging/log_daemon.c b/src/logging/log_daemon.c index cc0b96ea05..aa76dcd329 100644 --- a/src/logging/log_daemon.c +++ b/src/logging/log_daemon.c @@ -407,7 +407,7 @@ virLogDaemonExecRestartStatePath(bool privileged, rundir = virGetUserRuntimeDirectory(); old_umask = umask(077); - if (virFileMakePath(rundir) < 0) { + if (g_mkdir_with_parents(rundir, 0777) < 0) { umask(old_umask); return -1; } @@ -780,7 +780,7 @@ int main(int argc, char **argv) { else old_umask = umask(077); VIR_DEBUG("Ensuring run dir '%s' exists", run_dir); - if (virFileMakePath(run_dir) < 0) { + if (g_mkdir_with_parents(run_dir, 0777) < 0) { VIR_ERROR(_("unable to create rundir %s: %s"), run_dir, g_strerror(errno)); ret = VIR_DAEMON_ERR_RUNDIR; diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c index 2a5f8711c4..70b776e172 100644 --- a/src/lxc/lxc_container.c +++ b/src/lxc/lxc_container.c @@ -665,7 +665,7 @@ static int lxcContainerPivotRoot(virDomainFSDefPtr root) oldroot = g_strdup_printf("%s/.oldroot", root->src->path); - if (virFileMakePath(oldroot) < 0) { + if (g_mkdir_with_parents(oldroot, 0777) < 0) { virReportSystemError(errno, _("Failed to create %s"), oldroot); @@ -684,7 +684,7 @@ static int lxcContainerPivotRoot(virDomainFSDefPtr root) /* Create a directory called 'new' in tmpfs */ newroot = g_strdup_printf("%s/new", oldroot); - if (virFileMakePath(newroot) < 0) { + if (g_mkdir_with_parents(newroot, 0777) < 0) { virReportSystemError(errno, _("Failed to create %s"), newroot); @@ -889,7 +889,7 @@ static int lxcContainerMountBasicFS(bool userns_enabled, continue; } - if (virFileMakePath(mnt->dst) < 0) { + if (g_mkdir_with_parents(mnt->dst, 0777) < 0) { virReportSystemError(errno, _("Failed to mkdir %s"), mnt->dst); @@ -969,7 +969,7 @@ static int lxcContainerMountFSDev(virDomainDefPtr def, path = g_strdup_printf("/.oldroot/%s/%s.dev", stateDir, def->name); - if (virFileMakePath("/dev") < 0) { + if (g_mkdir_with_parents("/dev", 0777) < 0) { virReportSystemError(errno, "%s", _("Cannot create /dev")); return -1; @@ -998,7 +998,7 @@ static int lxcContainerMountFSDevPTS(virDomainDefPtr def, path = g_strdup_printf("/.oldroot/%s/%s.devpts", stateDir, def->name); - if (virFileMakePath("/dev/pts") < 0) { + if (g_mkdir_with_parents("/dev/pts", 0777) < 0) { virReportSystemError(errno, "%s", _("Cannot create /dev/pts")); return -1; @@ -1080,7 +1080,7 @@ static int lxcContainerMountFSBind(virDomainFSDefPtr fs, return -1; } if (S_ISDIR(st.st_mode)) { - if (virFileMakePath(fs->dst) < 0) { + if (g_mkdir_with_parents(fs->dst, 0777) < 0) { virReportSystemError(errno, _("Failed to create %s"), fs->dst); @@ -1349,7 +1349,7 @@ static int lxcContainerMountFSBlockHelper(virDomainFSDefPtr fs, if (fs->readonly) fsflags |= MS_RDONLY; - if (virFileMakePath(fs->dst) < 0) { + if (g_mkdir_with_parents(fs->dst, 0777) < 0) { virReportSystemError(errno, _("Failed to create %s"), fs->dst); @@ -1403,7 +1403,7 @@ static int lxcContainerMountFSTmpfs(virDomainFSDefPtr fs, data = g_strdup_printf("size=%lld%s", fs->usage, sec_mount_options); - if (virFileMakePath(fs->dst) < 0) { + if (g_mkdir_with_parents(fs->dst, 0777) < 0) { virReportSystemError(errno, _("Failed to create %s"), fs->dst); @@ -1508,7 +1508,7 @@ int lxcContainerSetupHostdevCapsMakePath(const char *dev) if ((tmp = strrchr(dir, '/'))) { *tmp = '\0'; - if (virFileMakePath(dir) < 0) { + if (g_mkdir_with_parents(dir, 0777) < 0) { virReportSystemError(errno, _("Failed to create directory for '%s' dev '%s'"), dir, dev); diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c index 8f166a436a..f633a24b16 100644 --- a/src/lxc/lxc_controller.c +++ b/src/lxc/lxc_controller.c @@ -1608,7 +1608,7 @@ virLXCControllerSetupHostdevSubsysUSB(virDomainDefPtr vmDef, mode = 0700 | S_IFCHR; - if (virFileMakePath(dstdir) < 0) { + if (g_mkdir_with_parents(dstdir, 0777) < 0) { virReportSystemError(errno, _("Unable to create %s"), dstdir); return -1; @@ -2128,7 +2128,7 @@ virLXCControllerSetupDevPTS(virLXCControllerPtr ctrl) devpts = g_strdup_printf("%s/%s.devpts", LXC_STATE_DIR, ctrl->def->name); ctrl->devptmx = g_strdup_printf("%s/%s.devpts/ptmx", LXC_STATE_DIR, ctrl->def->name); - if (virFileMakePath(devpts) < 0) { + if (g_mkdir_with_parents(devpts, 0777) < 0) { virReportSystemError(errno, _("Failed to make path %s"), devpts); diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 4416acf923..9a12e25fab 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -1535,7 +1535,7 @@ static int lxcStateInitialize(bool privileged, if (!(lxc_driver->closeCallbacks = virCloseCallbacksNew())) goto cleanup; - if (virFileMakePath(cfg->stateDir) < 0) { + if (g_mkdir_with_parents(cfg->stateDir, 0777) < 0) { virReportSystemError(errno, _("Failed to mkdir %s"), cfg->stateDir); @@ -2515,7 +2515,7 @@ static int lxcDomainSetAutostart(virDomainPtr dom, goto endjob; if (autostart) { - if (virFileMakePath(cfg->autostartDir) < 0) { + if (g_mkdir_with_parents(cfg->autostartDir, 0777) < 0) { virReportSystemError(errno, _("Cannot create autostart directory %s"), cfg->autostartDir); diff --git a/src/lxc/lxc_fuse.c b/src/lxc/lxc_fuse.c index 6e23361617..10ddd59a99 100644 --- a/src/lxc/lxc_fuse.c +++ b/src/lxc/lxc_fuse.c @@ -291,7 +291,7 @@ int lxcSetupFuse(virLXCFusePtr *f, virDomainDefPtr def) fuse->mountpoint = g_strdup_printf("%s/%s.fuse/", LXC_STATE_DIR, def->name); - if (virFileMakePath(fuse->mountpoint) < 0) { + if (g_mkdir_with_parents(fuse->mountpoint, 0777) < 0) { virReportSystemError(errno, _("Cannot create %s"), fuse->mountpoint); goto cleanup1; diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c index cbc04a3dcd..18577344b0 100644 --- a/src/lxc/lxc_process.c +++ b/src/lxc/lxc_process.c @@ -1257,7 +1257,7 @@ int virLXCProcessStart(virConnectPtr conn, } } - if (virFileMakePath(cfg->logDir) < 0) { + if (g_mkdir_with_parents(cfg->logDir, 0777) < 0) { virReportSystemError(errno, _("Cannot create log directory '%s'"), cfg->logDir); diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 519a473995..1ec6953ed4 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -737,7 +737,7 @@ networkStateInitialize(bool privileged, network_driver->radvdStateDir = g_strdup_printf("%s/radvd/lib", rundir); } - if (virFileMakePath(network_driver->stateDir) < 0) { + if (g_mkdir_with_parents(network_driver->stateDir, 0777) < 0) { virReportSystemError(errno, _("cannot create directory %s"), network_driver->stateDir); @@ -1618,7 +1618,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, if (!needDnsmasq && def->dns.enable == VIR_TRISTATE_BOOL_NO) return 0; - if (virFileMakePath(driver->pidDir) < 0) { + if (g_mkdir_with_parents(driver->pidDir, 0777) < 0) { virReportSystemError(errno, _("cannot create directory %s"), driver->pidDir); @@ -1628,7 +1628,7 @@ networkStartDhcpDaemon(virNetworkDriverStatePtr driver, if (!(pidfile = virPidFileBuildPath(driver->pidDir, def->name))) return -1; - if (virFileMakePath(driver->dnsmasqStateDir) < 0) { + if (g_mkdir_with_parents(driver->dnsmasqStateDir, 0777) < 0) { virReportSystemError(errno, _("cannot create directory %s"), driver->dnsmasqStateDir); @@ -1901,14 +1901,14 @@ networkStartRadvd(virNetworkDriverStatePtr driver, return -1; } - if (virFileMakePath(driver->pidDir) < 0) { + if (g_mkdir_with_parents(driver->pidDir, 0777) < 0) { virReportSystemError(errno, _("cannot create directory %s"), driver->pidDir); return -1; } - if (virFileMakePath(driver->radvdStateDir) < 0) { + if (g_mkdir_with_parents(driver->radvdStateDir, 0777) < 0) { virReportSystemError(errno, _("cannot create directory %s"), driver->radvdStateDir); @@ -4003,7 +4003,7 @@ networkSetAutostart(virNetworkPtr net, goto cleanup; if (new_autostart) { - if (virFileMakePath(driver->networkAutostartDir) < 0) { + if (g_mkdir_with_parents(driver->networkAutostartDir, 0777) < 0) { virReportSystemError(errno, _("cannot create autostart directory '%s'"), driver->networkAutostartDir); diff --git a/src/qemu/qemu_checkpoint.c b/src/qemu/qemu_checkpoint.c index 1740cadabf..689a556959 100644 --- a/src/qemu/qemu_checkpoint.c +++ b/src/qemu/qemu_checkpoint.c @@ -123,7 +123,7 @@ qemuCheckpointWriteMetadata(virDomainObjPtr vm, return -1; chkDir = g_strdup_printf("%s/%s", checkpointDir, vm->def->name); - if (virFileMakePath(chkDir) < 0) { + if (g_mkdir_with_parents(chkDir, 0777) < 0) { virReportSystemError(errno, _("cannot create checkpoint directory '%s'"), chkDir); return -1; diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index bb14fe2e33..17fa71c21b 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -6786,7 +6786,7 @@ qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm, return -1; snapDir = g_strdup_printf("%s/%s", snapshotDir, vm->def->name); - if (virFileMakePath(snapDir) < 0) { + if (g_mkdir_with_parents(snapDir, 0777) < 0) { virReportSystemError(errno, _("cannot create snapshot directory '%s'"), snapDir); return -1; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index b9bbdf8d48..598c2b432a 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -654,57 +654,57 @@ qemuStateInitialize(bool privileged, if (virQEMUDriverConfigSetDefaults(cfg) < 0) goto error; - if (virFileMakePath(cfg->stateDir) < 0) { + if (g_mkdir_with_parents(cfg->stateDir, 0777) < 0) { virReportSystemError(errno, _("Failed to create state dir %s"), cfg->stateDir); goto error; } - if (virFileMakePath(cfg->libDir) < 0) { + if (g_mkdir_with_parents(cfg->libDir, 0777) < 0) { virReportSystemError(errno, _("Failed to create lib dir %s"), cfg->libDir); goto error; } - if (virFileMakePath(cfg->cacheDir) < 0) { + if (g_mkdir_with_parents(cfg->cacheDir, 0777) < 0) { virReportSystemError(errno, _("Failed to create cache dir %s"), cfg->cacheDir); goto error; } - if (virFileMakePath(cfg->saveDir) < 0) { + if (g_mkdir_with_parents(cfg->saveDir, 0777) < 0) { virReportSystemError(errno, _("Failed to create save dir %s"), cfg->saveDir); goto error; } - if (virFileMakePath(cfg->snapshotDir) < 0) { + if (g_mkdir_with_parents(cfg->snapshotDir, 0777) < 0) { virReportSystemError(errno, _("Failed to create snapshot dir %s"), cfg->snapshotDir); goto error; } - if (virFileMakePath(cfg->checkpointDir) < 0) { + if (g_mkdir_with_parents(cfg->checkpointDir, 0777) < 0) { virReportSystemError(errno, _("Failed to create checkpoint dir %s"), cfg->checkpointDir); goto error; } - if (virFileMakePath(cfg->autoDumpPath) < 0) { + if (g_mkdir_with_parents(cfg->autoDumpPath, 0777) < 0) { virReportSystemError(errno, _("Failed to create dump dir %s"), cfg->autoDumpPath); goto error; } - if (virFileMakePath(cfg->channelTargetDir) < 0) { + if (g_mkdir_with_parents(cfg->channelTargetDir, 0777) < 0) { virReportSystemError(errno, _("Failed to create channel target dir %s"), cfg->channelTargetDir); goto error; } - if (virFileMakePath(cfg->nvramDir) < 0) { + if (g_mkdir_with_parents(cfg->nvramDir, 0777) < 0) { virReportSystemError(errno, _("Failed to create nvram dir %s"), cfg->nvramDir); goto error; } - if (virFileMakePath(cfg->memoryBackingDir) < 0) { + if (g_mkdir_with_parents(cfg->memoryBackingDir, 0777) < 0) { virReportSystemError(errno, _("Failed to create memory backing dir %s"), cfg->memoryBackingDir); goto error; } - if (virFileMakePath(cfg->slirpStateDir) < 0) { + if (g_mkdir_with_parents(cfg->slirpStateDir, 0777) < 0) { virReportSystemError(errno, _("Failed to create slirp state dir %s"), cfg->slirpStateDir); goto error; @@ -891,7 +891,7 @@ qemuStateInitialize(bool privileged, if (!hugepagePath) goto error; - if (virFileMakePath(hugepagePath) < 0) { + if (g_mkdir_with_parents(hugepagePath, 0777) < 0) { virReportSystemError(errno, _("unable to create hugepage path %s"), hugepagePath); @@ -8266,7 +8266,7 @@ static int qemuDomainSetAutostart(virDomainPtr dom, goto endjob; if (autostart) { - if (virFileMakePath(cfg->autostartDir) < 0) { + if (g_mkdir_with_parents(cfg->autostartDir, 0777) < 0) { virReportSystemError(errno, _("cannot create autostart directory %s"), cfg->autostartDir); diff --git a/src/qemu/qemu_namespace.c b/src/qemu/qemu_namespace.c index f4b4d4d9ec..cc08aa8c36 100644 --- a/src/qemu/qemu_namespace.c +++ b/src/qemu/qemu_namespace.c @@ -720,7 +720,7 @@ qemuDomainUnshareNamespace(virQEMUDriverConfigPtr cfg, /* At this point, devMountsPath is either: * a file (regular or special), or * a directory. */ - if ((S_ISDIR(sb.st_mode) && virFileMakePath(devMountsSavePath[i]) < 0) || + if ((S_ISDIR(sb.st_mode) && g_mkdir_with_parents(devMountsSavePath[i], 0777) < 0) || (!S_ISDIR(sb.st_mode) && virFileTouch(devMountsSavePath[i], sb.st_mode) < 0)) { virReportSystemError(errno, _("Failed to create %s"), @@ -749,7 +749,7 @@ qemuDomainUnshareNamespace(virQEMUDriverConfigPtr cfg, } if (S_ISDIR(sb.st_mode)) { - if (virFileMakePath(devMountsPath[i]) < 0) { + if (g_mkdir_with_parents(devMountsPath[i], 0777) < 0) { virReportSystemError(errno, _("Cannot create %s"), devMountsPath[i]); goto cleanup; diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 944664ca28..d3208e5203 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -6713,7 +6713,7 @@ qemuProcessPrepareHost(virQEMUDriverPtr driver, VIR_DEBUG("Ensuring no historical cgroup is lying around"); qemuRemoveCgroup(vm); - if (virFileMakePath(cfg->logDir) < 0) { + if (g_mkdir_with_parents(cfg->logDir, 0777) < 0) { virReportSystemError(errno, _("cannot create log directory %s"), cfg->logDir); diff --git a/src/remote/remote_daemon.c b/src/remote/remote_daemon.c index 635e1deec8..c5563a0e80 100644 --- a/src/remote/remote_daemon.c +++ b/src/remote/remote_daemon.c @@ -999,7 +999,7 @@ int main(int argc, char **argv) { else old_umask = umask(077); VIR_DEBUG("Ensuring run dir '%s' exists", run_dir); - if (virFileMakePath(run_dir) < 0) { + if (g_mkdir_with_parents(run_dir, 0777) < 0) { VIR_ERROR(_("unable to create rundir %s: %s"), run_dir, g_strerror(errno)); ret = VIR_DAEMON_ERR_RUNDIR; diff --git a/src/storage/storage_driver.c b/src/storage/storage_driver.c index 9c5be071df..ecb5b86b4f 100644 --- a/src/storage/storage_driver.c +++ b/src/storage/storage_driver.c @@ -291,7 +291,7 @@ storageStateInitialize(bool privileged, } driver->privileged = privileged; - if (virFileMakePath(driver->stateDir) < 0) { + if (g_mkdir_with_parents(driver->stateDir, 0777) < 0) { virReportError(errno, _("cannot create directory %s"), driver->stateDir); @@ -1398,7 +1398,7 @@ storagePoolSetAutostart(virStoragePoolPtr pool, cur_autostart = virStoragePoolObjIsAutostart(obj); if (cur_autostart != new_autostart) { if (new_autostart) { - if (virFileMakePath(driver->autostartDir) < 0) { + if (g_mkdir_with_parents(driver->autostartDir, 0777) < 0) { virReportSystemError(errno, _("cannot create autostart directory %s"), driver->autostartDir); diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c index b5adb05826..75c4c8eccd 100644 --- a/src/storage/storage_util.c +++ b/src/storage/storage_util.c @@ -2811,7 +2811,7 @@ virStorageBackendBuildLocal(virStoragePoolObjPtr pool) /* assure all directories in the path prior to the final dir * exist, with default uid/gid/mode. */ *p = '\0'; - if (virFileMakePath(parent) < 0) { + if (g_mkdir_with_parents(parent, 0777) < 0) { virReportSystemError(errno, _("cannot create path '%s'"), parent); return -1; diff --git a/src/util/vircgroupv1.c b/src/util/vircgroupv1.c index 79015ddaa4..bc79aaa775 100644 --- a/src/util/vircgroupv1.c +++ b/src/util/vircgroupv1.c @@ -864,7 +864,7 @@ virCgroupV1BindMount(virCgroupPtr group, VIR_DEBUG("Mounting cgroups at '%s'", root); - if (virFileMakePath(root) < 0) { + if (g_mkdir_with_parents(root, 0777) < 0) { virReportSystemError(errno, _("Unable to create directory %s"), root); @@ -890,7 +890,7 @@ virCgroupV1BindMount(virCgroupPtr group, VIR_DEBUG("Create mount point '%s'", group->legacy[i].mountPoint); - if (virFileMakePath(group->legacy[i].mountPoint) < 0) { + if (g_mkdir_with_parents(group->legacy[i].mountPoint, 0777) < 0) { virReportSystemError(errno, _("Unable to create directory %s"), group->legacy[i].mountPoint); diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c index 24c7e64c67..3c1f1d97dd 100644 --- a/src/util/vircgroupv2.c +++ b/src/util/vircgroupv2.c @@ -595,7 +595,7 @@ virCgroupV2BindMount(virCgroupPtr group, VIR_DEBUG("Mounting cgroups at '%s'", group->unified.mountPoint); - if (virFileMakePath(group->unified.mountPoint) < 0) { + if (g_mkdir_with_parents(group->unified.mountPoint, 0777) < 0) { virReportSystemError(errno, _("Unable to create directory %s"), group->unified.mountPoint); return -1; diff --git a/src/util/virdaemon.c b/src/util/virdaemon.c index a02665dce8..bb2df2eb2c 100644 --- a/src/util/virdaemon.c +++ b/src/util/virdaemon.c @@ -238,7 +238,7 @@ virDaemonUnixSocketPaths(const char *sock_prefix, rundir = virGetUserRuntimeDirectory(); old_umask = umask(077); - if (virFileMakePath(rundir) < 0) { + if (g_mkdir_with_parents(rundir, 0777) < 0) { umask(old_umask); goto cleanup; } diff --git a/src/util/virdnsmasq.c b/src/util/virdnsmasq.c index 3eee4a5a84..3913114eca 100644 --- a/src/util/virdnsmasq.c +++ b/src/util/virdnsmasq.c @@ -524,7 +524,7 @@ dnsmasqSave(const dnsmasqContext *ctx) { int ret = 0; - if (virFileMakePath(ctx->config_dir) < 0) { + if (g_mkdir_with_parents(ctx->config_dir, 0777) < 0) { virReportSystemError(errno, _("cannot create config directory '%s'"), ctx->config_dir); return -1; diff --git a/src/util/virfile.c b/src/util/virfile.c index bba0e892ea..23e334872f 100644 --- a/src/util/virfile.c +++ b/src/util/virfile.c @@ -3698,7 +3698,7 @@ virFileSetupDev(const char *path, const unsigned long mount_flags = MS_NOSUID; const char *mount_fs = "tmpfs"; - if (virFileMakePath(path) < 0) { + if (g_mkdir_with_parents(path, 0777) < 0) { virReportSystemError(errno, _("Failed to make path %s"), path); return -1; @@ -3723,7 +3723,7 @@ virFileBindMountDevice(const char *src, { if (!virFileExists(dst)) { if (virFileIsDir(src)) { - if (virFileMakePath(dst) < 0) { + if (g_mkdir_with_parents(dst, 0777) < 0) { virReportSystemError(errno, _("Unable to make dir %s"), dst); return -1; } diff --git a/src/util/virfilecache.c b/src/util/virfilecache.c index 14b2885505..f2324b2cf2 100644 --- a/src/util/virfilecache.c +++ b/src/util/virfilecache.c @@ -106,7 +106,7 @@ virFileCacheGetFileName(virFileCachePtr cache, if (virCryptoHashString(VIR_CRYPTO_HASH_SHA256, name, &namehash) < 0) return NULL; - if (virFileMakePath(cache->dir) < 0) { + if (g_mkdir_with_parents(cache->dir, 0777) < 0) { virReportSystemError(errno, _("Unable to create directory '%s'"), cache->dir); diff --git a/src/util/virlog.c b/src/util/virlog.c index cdfeba8251..d1e9aa5432 100644 --- a/src/util/virlog.c +++ b/src/util/virlog.c @@ -176,7 +176,7 @@ virLogSetDefaultOutputToFile(const char *binary, bool privileged) logdir = virGetUserCacheDirectory(); old_umask = umask(077); - if (virFileMakePath(logdir) < 0) { + if (g_mkdir_with_parents(logdir, 0777) < 0) { umask(old_umask); return -1; } diff --git a/src/util/virpidfile.c b/src/util/virpidfile.c index 4c38ebe500..c6389c1869 100644 --- a/src/util/virpidfile.c +++ b/src/util/virpidfile.c @@ -93,7 +93,7 @@ int virPidFileWrite(const char *dir, if (name == NULL || dir == NULL) return -EINVAL; - if (virFileMakePath(dir) < 0) + if (g_mkdir_with_parents(dir, 0777) < 0) return -errno; if (!(pidfile = virPidFileBuildPath(dir, name))) diff --git a/src/util/virresctrl.c b/src/util/virresctrl.c index ab35bccfc5..0460be8d3a 100644 --- a/src/util/virresctrl.c +++ b/src/util/virresctrl.c @@ -2337,7 +2337,7 @@ virResctrlCreateGroupPath(const char *path) if (virFileExists(path)) return 0; - if (virFileMakePath(path) < 0) { + if (g_mkdir_with_parents(path, 0777) < 0) { virReportSystemError(errno, _("Cannot create resctrl directory '%s'"), path); diff --git a/tests/securityselinuxlabeltest.c b/tests/securityselinuxlabeltest.c index 168acc2bdf..b1bf6e0f95 100644 --- a/tests/securityselinuxlabeltest.c +++ b/tests/securityselinuxlabeltest.c @@ -62,7 +62,7 @@ testUserXattrEnabled(void) char *path = NULL; path = g_strdup_printf("%s/securityselinuxlabeldata/testxattr", abs_builddir); - if (virFileMakePath(abs_builddir "/securityselinuxlabeldata") < 0 || + if (g_mkdir_with_parents(abs_builddir "/securityselinuxlabeldata", 0777) < 0 || virFileTouch(path, 0600) < 0) goto cleanup; @@ -221,7 +221,7 @@ testSELinuxCreateDisks(testSELinuxFile *files, size_t nfiles) { size_t i; - if (virFileMakePath(abs_builddir "/securityselinuxlabeldata/nfs") < 0) + if (g_mkdir_with_parents(abs_builddir "/securityselinuxlabeldata/nfs", 0777) < 0) return -1; for (i = 0; i < nfiles; i++) { diff --git a/tests/vboxsnapshotxmltest.c b/tests/vboxsnapshotxmltest.c index 9298bcb837..e44ca7fc98 100644 --- a/tests/vboxsnapshotxmltest.c +++ b/tests/vboxsnapshotxmltest.c @@ -54,7 +54,7 @@ testCompareXMLtoXMLFiles(const char *xml) pathResult = g_strdup(abs_builddir "/vboxsnapshotxmldata/testResult.vbox"); - if (virFileMakePath(abs_builddir "/vboxsnapshotxmldata") < 0) + if (g_mkdir_with_parents(abs_builddir "/vboxsnapshotxmldata", 0777) < 0) goto cleanup; if (virTestLoadFile(xml, &xmlData) < 0) diff --git a/tests/vircgroupmock.c b/tests/vircgroupmock.c index dac6b6b991..5d7badc44a 100644 --- a/tests/vircgroupmock.c +++ b/tests/vircgroupmock.c @@ -371,7 +371,7 @@ static void init_sysfs(void) fakesysfscgroupdir = g_strdup_printf("%s%s", fakerootdir, SYSFS_CGROUP_PREFIX); - if (virFileMakePath(fakesysfscgroupdir) < 0) { + if (g_mkdir_with_parents(fakesysfscgroupdir, 0777) < 0) { fprintf(stderr, "Cannot create %s\n", fakesysfscgroupdir); abort(); } diff --git a/tests/virhostdevtest.c b/tests/virhostdevtest.c index 91f9112e8b..d3c0bca1c0 100644 --- a/tests/virhostdevtest.c +++ b/tests/virhostdevtest.c @@ -162,7 +162,7 @@ myInit(void) if ((mgr->activeNVMeHostdevs = virNVMeDeviceListNew()) == NULL) goto cleanup; mgr->stateDir = g_strdup(TEST_STATE_DIR); - if (virFileMakePath(mgr->stateDir) < 0) + if (g_mkdir_with_parents(mgr->stateDir, 0777) < 0) goto cleanup; return 0; diff --git a/tests/virpcimock.c b/tests/virpcimock.c index d1c6220c57..be513ad918 100644 --- a/tests/virpcimock.c +++ b/tests/virpcimock.c @@ -201,7 +201,7 @@ make_dir(const char *path, dirpath = g_strdup_printf("%s/%s", path, name); - if (virFileMakePath(dirpath) < 0) + if (g_mkdir_with_parents(dirpath, 0777) < 0) ABORT("Unable to create: %s", dirpath); } @@ -405,7 +405,7 @@ pci_device_create_iommu(const struct pciDevice *dev, iommuPath = g_strdup_printf("%s/sys/kernel/iommu_groups/%d/devices/", fakerootdir, dev->iommuGroup); - if (virFileMakePath(iommuPath) < 0) + if (g_mkdir_with_parents(iommuPath, 0777) < 0) ABORT("Unable to create: %s", iommuPath); if (g_snprintf(tmp, sizeof(tmp), @@ -473,7 +473,7 @@ pci_device_new_from_stub(const struct pciDevice *data) if (!(devpath = pci_device_get_path(dev, NULL, true))) ABORT_OOM(); - if (virFileMakePath(devpath) < 0) + if (g_mkdir_with_parents(devpath, 0777) < 0) ABORT("Unable to create: %s", devpath); if (stat(configSrc, &sb) == 0) @@ -693,7 +693,7 @@ pci_driver_new(const char *name, ...) if (!(driverpath = pci_driver_get_path(driver, NULL, true))) ABORT_OOM(); - if (virFileMakePath(driverpath) < 0) + if (g_mkdir_with_parents(driverpath, 0777) < 0) ABORT("Unable to create: %s", driverpath); va_start(args, name); @@ -954,7 +954,7 @@ init_env(void) tmp = g_strdup_printf("%s%s", fakerootdir, SYSFS_PCI_PREFIX); - if (virFileMakePath(tmp) < 0) + if (g_mkdir_with_parents(tmp, 0777) < 0) ABORT("Unable to create: %s", tmp); make_dir(tmp, "devices"); @@ -965,7 +965,7 @@ init_env(void) VIR_FREE(tmp); tmp = g_strdup_printf("%s/dev/vfio", fakerootdir); - if (virFileMakePath(tmp) < 0) + if (g_mkdir_with_parents(tmp, 0777) < 0) ABORT("Unable to create: %s", tmp); make_file(tmp, "vfio", NULL, -1); diff --git a/tests/virstoragetest.c b/tests/virstoragetest.c index 762328df9a..84dd813b80 100644 --- a/tests/virstoragetest.c +++ b/tests/virstoragetest.c @@ -141,11 +141,11 @@ testPrepImages(void) absdir = g_strdup_printf("%s/dir", datadir); abslink2 = g_strdup_printf("%s/sub/link2", datadir); - if (virFileMakePath(datadir "/sub") < 0) { + if (g_mkdir_with_parents(datadir "/sub", 0777) < 0) { fprintf(stderr, "unable to create directory %s\n", datadir "/sub"); goto cleanup; } - if (virFileMakePath(datadir "/dir") < 0) { + if (g_mkdir_with_parents(datadir "/dir", 0777) < 0) { fprintf(stderr, "unable to create directory %s\n", datadir "/dir"); goto cleanup; } -- 2.26.2

On a Monday in 2021, Michal Privoznik wrote:
Generated using the following spatch:
@@ expression path; @@ - virFileMakePath(path) + g_mkdir_with_parents(path, 0777)
However, 14 occurrences were not replaced, e.g. in virHostdevManagerNew(). I don't really understand why.
d/I don't really understand why./ No need to make that statement a part of the git history. Sometimes coccinelle (the semantic patching software) can't understand a function or a file, so it leaves it alone. Jano
Fixed by hand afterwards.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> ---

These functions are now unused. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/libvirt_private.syms | 2 -- src/util/virfile.c | 20 -------------------- src/util/virfile.h | 3 --- 3 files changed, 25 deletions(-) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 6b7261b987..8c0a68d1bf 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2202,8 +2202,6 @@ virFileLinkPointsTo; virFileLock; virFileLoopDeviceAssociate; virFileMakeParentPath; -virFileMakePath; -virFileMakePathWithMode; virFileMoveMount; virFileNBDDeviceAssociate; virFileOpenAs; diff --git a/src/util/virfile.c b/src/util/virfile.c index 23e334872f..ee434058c2 100644 --- a/src/util/virfile.c +++ b/src/util/virfile.c @@ -3037,26 +3037,6 @@ int virFileChownFiles(const char *name, } #endif /* WIN32 */ -/** - * Creates the given directory with mode 0777 if it's not already existing. - * - * Returns 0 on success, or -1 if an error occurred (in which case, errno - * is set appropriately). - */ -int -virFileMakePath(const char *path) -{ - return g_mkdir_with_parents(path, 0777); -} - -int -virFileMakePathWithMode(const char *path, - mode_t mode) -{ - return g_mkdir_with_parents(path, mode); -} - - int virFileMakeParentPath(const char *path) { diff --git a/src/util/virfile.h b/src/util/virfile.h index 733d652ac9..bca0c32a04 100644 --- a/src/util/virfile.h +++ b/src/util/virfile.h @@ -277,9 +277,6 @@ int virDirRead(DIR *dirp, struct dirent **ent, const char *dirname) void virDirClose(DIR *dirp); G_DEFINE_AUTOPTR_CLEANUP_FUNC(DIR, virDirClose); -int virFileMakePath(const char *path) G_GNUC_WARN_UNUSED_RESULT; -int virFileMakePathWithMode(const char *path, - mode_t mode) G_GNUC_WARN_UNUSED_RESULT; int virFileMakeParentPath(const char *path) G_GNUC_WARN_UNUSED_RESULT; char *virFileBuildPath(const char *dir, -- 2.26.2

On a Monday in 2021, Michal Privoznik wrote:
While reading through glib manual I've noticed there's g_mkdir_with_parents() which does the same as our virFileMakePath() and virFileMakePathWithMode().
Michal Prívozník (4): virfile: Replace virFileMakePathHelper() with g_mkdir_with_parents()
This patch would make sense separately if the conversion had to be spread out over months, like we did with VIR_ALLOC. But since you delete the functions anyway in 4/4, consider squashing 1/4 and 4/4 together.
lib: Replace virFileMakePathWithMode() with g_mkdir_with_parents() lib: Replace virFileMakePath() with g_mkdir_with_parents() util: Drop virFileMakePath() and virFileMakePathWithMode()
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

On 3/4/21 6:08 PM, Ján Tomko wrote:
On a Monday in 2021, Michal Privoznik wrote:
While reading through glib manual I've noticed there's g_mkdir_with_parents() which does the same as our virFileMakePath() and virFileMakePathWithMode().
Michal Prívozník (4): virfile: Replace virFileMakePathHelper() with g_mkdir_with_parents()
This patch would make sense separately if the conversion had to be spread out over months, like we did with VIR_ALLOC. But since you delete the functions anyway in 4/4, consider squashing 1/4 and 4/4 together.
Frankly, sometimes I can't tell anymore what change is small enough to be contained in one patch (even though it may accommodate two semantic changes), and when it is big enough that it should be split into two patches. Especially if one patched makes no sense without the other. I've done some backports onto v4.5.0 and for instance even though we tried to break glib rewrite into as small semantic changes as possible: a) there were still a lot of conflicts, b) I've ended up rewriting half of the code by hand anyway. If easy backports are the goal we try to make changes as small as possible, maybe it's time we re-evaluate that. I say we rip off the band aid and move on.
lib: Replace virFileMakePathWithMode() with g_mkdir_with_parents() lib: Replace virFileMakePath() with g_mkdir_with_parents() util: Drop virFileMakePath() and virFileMakePathWithMode()
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Pushed, thanks. Michal
participants (2)
-
Ján Tomko
-
Michal Privoznik