core: add support for vpick for ExtensionImages=
This commit is contained in:
+17
-1
@@ -47,6 +47,7 @@
|
||||
#include "tmpfile-util.h"
|
||||
#include "umask-util.h"
|
||||
#include "user-util.h"
|
||||
#include "vpick.h"
|
||||
|
||||
#define DEV_MOUNT_OPTIONS (MS_NOSUID|MS_STRICTATIME|MS_NOEXEC)
|
||||
|
||||
@@ -500,9 +501,24 @@ static int append_extensions(
|
||||
/* First, prepare a mount for each image, but these won't be visible to the unit, instead
|
||||
* they will be mounted in our propagate directory, and used as a source for the overlay. */
|
||||
for (size_t i = 0; i < n; i++) {
|
||||
_cleanup_(pick_result_done) PickResult result = PICK_RESULT_NULL;
|
||||
_cleanup_free_ char *mount_point = NULL;
|
||||
const MountImage *m = mount_images + i;
|
||||
|
||||
r = path_pick(/* toplevel_path= */ NULL,
|
||||
/* toplevel_fd= */ AT_FDCWD,
|
||||
m->source,
|
||||
&pick_filter_image_raw,
|
||||
PICK_ARCHITECTURE|PICK_TRIES,
|
||||
&result);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (!result.path)
|
||||
return log_debug_errno(
|
||||
SYNTHETIC_ERRNO(ENOENT),
|
||||
"No matching entry in .v/ directory %s found.",
|
||||
m->source);
|
||||
|
||||
if (asprintf(&mount_point, "%s/%zu", extension_dir, i) < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -524,7 +540,7 @@ static int append_extensions(
|
||||
.path_malloc = TAKE_PTR(mount_point),
|
||||
.image_options_const = m->mount_options,
|
||||
.ignore = m->ignore_enoent,
|
||||
.source_const = m->source,
|
||||
.source_malloc = TAKE_PTR(result.path),
|
||||
.mode = MOUNT_EXTENSION_IMAGE,
|
||||
.has_prefix = true,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user