mirror of
https://github.com/systemd/systemd.git
synced 2025-02-08 09:57:41 +03:00
core: do not fail if ignorable img.v/ vpick dir is empty
If the vpick directory is configured to be ignored if missing, do not fail and just skip ahead. Follow-up for 5e79dd96a88 Follow-up for 622efc544dc
This commit is contained in:
parent
a7af35f1d4
commit
00f546e25e
@ -528,11 +528,15 @@ static int append_extensions(
|
|||||||
&result);
|
&result);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
if (!result.path)
|
if (!result.path) {
|
||||||
|
if (m->ignore_enoent)
|
||||||
|
continue;
|
||||||
|
|
||||||
return log_debug_errno(
|
return log_debug_errno(
|
||||||
SYNTHETIC_ERRNO(ENOENT),
|
SYNTHETIC_ERRNO(ENOENT),
|
||||||
"No matching entry in .v/ directory %s found.",
|
"No matching entry in .v/ directory %s found.",
|
||||||
m->source);
|
m->source);
|
||||||
|
}
|
||||||
|
|
||||||
r = verity_settings_load(&verity, result.path, /* root_hash_path= */ NULL, /* root_hash_sig_path= */ NULL);
|
r = verity_settings_load(&verity, result.path, /* root_hash_path= */ NULL, /* root_hash_sig_path= */ NULL);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
@ -575,10 +579,6 @@ static int append_extensions(
|
|||||||
const char *e = *extension_directory;
|
const char *e = *extension_directory;
|
||||||
bool ignore_enoent = false;
|
bool ignore_enoent = false;
|
||||||
|
|
||||||
/* Pick up the counter where the ExtensionImages left it. */
|
|
||||||
if (asprintf(&mount_point, "%s/unit-extensions/%zu", private_namespace_dir, n_mount_images++) < 0)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
/* Look for any prefixes */
|
/* Look for any prefixes */
|
||||||
if (startswith(e, "-")) {
|
if (startswith(e, "-")) {
|
||||||
e++;
|
e++;
|
||||||
@ -596,11 +596,19 @@ static int append_extensions(
|
|||||||
&result);
|
&result);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
if (!result.path)
|
if (!result.path) {
|
||||||
|
if (ignore_enoent)
|
||||||
|
continue;
|
||||||
|
|
||||||
return log_debug_errno(
|
return log_debug_errno(
|
||||||
SYNTHETIC_ERRNO(ENOENT),
|
SYNTHETIC_ERRNO(ENOENT),
|
||||||
"No matching entry in .v/ directory %s found.",
|
"No matching entry in .v/ directory %s found.",
|
||||||
e);
|
e);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Pick up the counter where the ExtensionImages left it. */
|
||||||
|
if (asprintf(&mount_point, "%s/unit-extensions/%zu", private_namespace_dir, n_mount_images++) < 0)
|
||||||
|
return -ENOMEM;
|
||||||
|
|
||||||
for (size_t j = 0; hierarchies && hierarchies[j]; ++j) {
|
for (size_t j = 0; hierarchies && hierarchies[j]; ++j) {
|
||||||
char *prefixed_hierarchy = path_join(mount_point, hierarchies[j]);
|
char *prefixed_hierarchy = path_join(mount_point, hierarchies[j]);
|
||||||
|
@ -427,14 +427,15 @@ systemctl is-active testservice-50e.service
|
|||||||
# Check vpick support in ExtensionImages=
|
# Check vpick support in ExtensionImages=
|
||||||
VBASE="vtest$RANDOM"
|
VBASE="vtest$RANDOM"
|
||||||
VDIR="/tmp/$VBASE.v"
|
VDIR="/tmp/$VBASE.v"
|
||||||
mkdir "$VDIR"
|
EMPTY_VDIR="/tmp/$VBASE-empty.v"
|
||||||
|
mkdir "$VDIR" "$EMPTY_VDIR"
|
||||||
|
|
||||||
ln -s /tmp/app0.raw "$VDIR/${VBASE}_0.raw"
|
ln -s /tmp/app0.raw "$VDIR/${VBASE}_0.raw"
|
||||||
ln -s /tmp/app1.raw "$VDIR/${VBASE}_1.raw"
|
ln -s /tmp/app1.raw "$VDIR/${VBASE}_1.raw"
|
||||||
|
|
||||||
systemd-run -P -p ExtensionImages="$VDIR" bash -c '/opt/script1.sh | grep ID'
|
systemd-run -P -p ExtensionImages="$VDIR -$EMPTY_VDIR" bash -c '/opt/script1.sh | grep ID'
|
||||||
|
|
||||||
rm -rf "$VDIR"
|
rm -rf "$VDIR" "$EMPTY_VDIR"
|
||||||
|
|
||||||
# ExtensionDirectories will set up an overlay
|
# ExtensionDirectories will set up an overlay
|
||||||
mkdir -p "$IMAGE_DIR/app0" "$IMAGE_DIR/app1" "$IMAGE_DIR/app-nodistro" "$IMAGE_DIR/service-scoped-test"
|
mkdir -p "$IMAGE_DIR/app0" "$IMAGE_DIR/app1" "$IMAGE_DIR/app-nodistro" "$IMAGE_DIR/service-scoped-test"
|
||||||
@ -502,14 +503,15 @@ systemctl is-active testservice-50f.service
|
|||||||
# Check vpick support in ExtensionDirectories=
|
# Check vpick support in ExtensionDirectories=
|
||||||
VBASE="vtest$RANDOM"
|
VBASE="vtest$RANDOM"
|
||||||
VDIR="/tmp/$VBASE.v"
|
VDIR="/tmp/$VBASE.v"
|
||||||
mkdir "$VDIR"
|
EMPTY_VDIR="/tmp/$VBASE-empty.v"
|
||||||
|
mkdir "$VDIR" "$EMPTY_VDIR"
|
||||||
|
|
||||||
ln -s "$IMAGE_DIR/app0" "$VDIR/${VBASE}_0"
|
ln -s "$IMAGE_DIR/app0" "$VDIR/${VBASE}_0"
|
||||||
ln -s "$IMAGE_DIR/app1" "$VDIR/${VBASE}_1"
|
ln -s "$IMAGE_DIR/app1" "$VDIR/${VBASE}_1"
|
||||||
|
|
||||||
systemd-run -P --property ExtensionDirectories="$VDIR" cat /opt/script1.sh | grep -q -F "extension-release.app2"
|
systemd-run -P --property ExtensionDirectories="$VDIR -$EMPTY_VDIR" cat /opt/script1.sh | grep -q -F "extension-release.app2"
|
||||||
|
|
||||||
rm -rf "$VDIR"
|
rm -rf "$VDIR" "$EMPTY_VDIR"
|
||||||
|
|
||||||
systemd-dissect --umount "$IMAGE_DIR/app0"
|
systemd-dissect --umount "$IMAGE_DIR/app0"
|
||||||
systemd-dissect --umount "$IMAGE_DIR/app1"
|
systemd-dissect --umount "$IMAGE_DIR/app1"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user