mirror of
https://github.com/systemd/systemd.git
synced 2024-10-27 18:55:40 +03:00
tmpfiles: in C lines, make missing source graceful error
I don't see where it would ever be a good thing that file copies done via tmpfiles.d/ C lines cause the tmpfiles operation to fail if their source happens to be missing. It's a problem if we can't set up the destination properly (which is the job of systemd-tmpfiles after all), but if the source is simply missing (NB: setting up the source is the job of of the rules writer) this shouldn't be a problem. This is useful for copying stuff into place if it happens to exist. For example, if systemd-stub passes additional data into the initrd's /.extra/ directory, we can copy it into a better place (e.g. /run/) with this, where it will survive the initrd→host transition. This mirrors behaviour of the recently added "^" line modifier which may be used source "w" lines from credentials – there two the behaviour is to simply skip the line if the source is missing.
This commit is contained in:
parent
1a0e065e9f
commit
ce610af143
@ -3153,6 +3153,13 @@ static int parse_line(
|
||||
}
|
||||
|
||||
path_simplify(i.argument);
|
||||
|
||||
if (laccess(i.argument, F_OK) == -ENOENT) {
|
||||
/* Silently skip over lines where the source file is missing. */
|
||||
log_syntax(NULL, LOG_INFO, fname, line, 0, "Copy source path '%s' does not exist, skipping line.", i.argument);
|
||||
return 0;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case CREATE_CHAR_DEVICE:
|
||||
|
@ -116,6 +116,8 @@ test "$(stat -c %U:%G:%a /tmp/C/2/f1)" = "daemon:daemon:755"
|
||||
|
||||
systemd-tmpfiles --create - <<EOF
|
||||
C /tmp/C/3 0755 daemon daemon - /tmp/C/3-origin
|
||||
C /tmp/C/4 0755 daemon daemon - /tmp/C/definitely-missing
|
||||
EOF
|
||||
|
||||
test "$(stat -c %U:%G:%a /tmp/C/3/f1)" = "root:root:644"
|
||||
test ! -e /tmp/C/4
|
||||
|
Loading…
Reference in New Issue
Block a user