diff options
author | Luca Boccassi <bluca@debian.org> | 2020-12-19 21:40:47 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2020-12-21 21:48:13 +0100 |
commit | 8bab8029105e44ce78c5e11bffa203a1135fe201 (patch) | |
tree | 4f59489231f4d0be6b3688836747f6dbed4a620c /src/machine/machine-dbus.c | |
parent | 9df1e11e31588c5df39aa7efed05414273f93f69 (diff) | |
download | systemd-8bab8029105e44ce78c5e11bffa203a1135fe201.tar.gz |
basic: add make_mount_point_inode helper
Creates a file or a directory depending on the source path, useful
for creating mount points.
Diffstat (limited to 'src/machine/machine-dbus.c')
-rw-r--r-- | src/machine/machine-dbus.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c index 4646571668..5d8d4276e2 100644 --- a/src/machine/machine-dbus.c +++ b/src/machine/machine-dbus.c @@ -32,6 +32,7 @@ #include "missing_capability.h" #include "mkdir.h" #include "mount-util.h" +#include "mountpoint-util.h" #include "namespace-util.h" #include "os-util.h" #include "path-util.h" @@ -908,10 +909,7 @@ int bus_machine_method_bind_mount(sd_bus_message *message, void *userdata, sd_bu /* Second, we mount the source file or directory to a directory inside of our MS_SLAVE playground. */ mount_tmp = strjoina(mount_slave, "/mount"); - if (S_ISDIR(st.st_mode)) - r = mkdir_errno_wrapper(mount_tmp, 0700); - else - r = touch(mount_tmp); + r = make_mount_point_inode_from_stat(&st, mount_tmp, 0700); if (r < 0) { sd_bus_error_set_errnof(error, r, "Failed to create temporary mount point %s: %m", mount_tmp); goto finish; @@ -1003,12 +1001,8 @@ int bus_machine_method_bind_mount(sd_bus_message *message, void *userdata, sd_bu } if (make_file_or_directory) { - if (S_ISDIR(st.st_mode)) - (void) mkdir_p(dest, 0755); - else { - (void) mkdir_parents(dest, 0755); - (void) mknod(dest, S_IFREG|0600, 0); - } + (void) mkdir_parents(dest, 0755); + (void) make_mount_point_inode_from_stat(&st, dest, 0700); } mount_inside = strjoina("/run/host/incoming/", basename(mount_outside)); |