1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-03 01:17:45 +03:00

tmpfiles: check the directory we were supposed to create, not its parent

This current code checks the wrong directory. This was broken in
4c39d899ff which converted the previous
code incorrectly.

(cherry picked from commit 92631578ff)
(cherry picked from commit 625472b219)
This commit is contained in:
Lennart Poettering 2022-07-13 23:44:45 +02:00 committed by Zbigniew Jędrzejewski-Szmek
parent a77b81f124
commit 8b674cf43f

View File

@ -1641,15 +1641,12 @@ static int create_directory_or_subvolume(const char *path, mode_t mode, bool sub
r = btrfs_is_subvol(empty_to_root(arg_root)) > 0;
}
if (!r)
/* Don't create a subvolume unless the root directory is
* one, too. We do this under the assumption that if the
* root directory is just a plain directory (i.e. very
* light-weight), we shouldn't try to split it up into
* subvolumes (i.e. more heavy-weight). Thus, chroot()
* environments and suchlike will get a full brtfs
* subvolume set up below their tree only if they
* specifically set up a btrfs subvolume for the root
* dir too. */
/* Don't create a subvolume unless the root directory is one, too. We do this under
* the assumption that if the root directory is just a plain directory (i.e. very
* light-weight), we shouldn't try to split it up into subvolumes (i.e. more
* heavy-weight). Thus, chroot() environments and suchlike will get a full brtfs
* subvolume set up below their tree only if they specifically set up a btrfs
* subvolume for the root dir too. */
subvol = false;
else {
@ -1669,7 +1666,7 @@ static int create_directory_or_subvolume(const char *path, mode_t mode, bool sub
if (!IN_SET(r, -EEXIST, -EROFS))
return log_error_errno(r, "Failed to create directory or subvolume \"%s\": %m", path);
k = is_dir_fd(pfd);
k = is_dir_full(pfd, basename(path), /* follow= */ false);
if (k == -ENOENT && r == -EROFS)
return log_error_errno(r, "%s does not exist and cannot be created as the file system is read-only.", path);
if (k < 0)