diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index 005df04328..030ada5d6e 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -761,12 +761,11 @@ static int enumerate_partitions(dev_t devnum) { * on. And thus we also don't set DISSECT_IMAGE_PIN_PARTITION_DEVICES here, because * we don't actually mount anything immediately. */ &m); - if (r == -ENOPKG) { - log_debug_errno(r, "No suitable partition table found on block device %s, ignoring.", devname); - return 0; + if (r < 0) { + bool ok = r == -ENOPKG; + dissect_log_error(ok ? LOG_DEBUG : LOG_ERR, r, devname, NULL); + return ok ? 0 : r; } - if (r < 0) - return log_error_errno(r, "Failed to dissect partition table of block device %s: %m", devname); if (m->partitions[PARTITION_SWAP].found) { k = add_partition_swap(m->partitions + PARTITION_SWAP); diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index 6bf6636ba3..63df45c09c 100644 --- a/src/shared/dissect-image.c +++ b/src/shared/dissect-image.c @@ -1575,7 +1575,8 @@ int dissect_image_file( #endif } -static int dissect_log_error(int r, const char *name, const VeritySettings *verity) { +int dissect_log_error(int log_level, int r, const char *name, const VeritySettings *verity) { + assert(log_level >= 0 && log_level <= LOG_DEBUG); assert(name); switch (r) { @@ -1620,7 +1621,7 @@ static int dissect_log_error(int r, const char *name, const VeritySettings *veri return log_error_errno(r, "%s: no suitable partitions found.", name); default: - return log_error_errno(r, "Failed to dissect image '%s': %m", name); + return log_error_errno(r, "%s: cannot dissect image: %m", name); } } @@ -1633,6 +1634,7 @@ int dissect_image_file_and_warn( DissectedImage **ret) { return dissect_log_error( + LOG_ERR, dissect_image_file(path, verity, mount_options, image_policy, flags, ret), path, verity); @@ -3560,6 +3562,7 @@ int dissect_loop_device_and_warn( assert(loop); return dissect_log_error( + LOG_ERR, dissect_loop_device(loop, verity, mount_options, image_policy, flags, ret), loop->backing_file ?: loop->node, verity); diff --git a/src/shared/dissect-image.h b/src/shared/dissect-image.h index a55ad63d2d..184e6151ed 100644 --- a/src/shared/dissect-image.h +++ b/src/shared/dissect-image.h @@ -147,6 +147,7 @@ static inline int probe_filesystem(const char *path, char **ret_fstype) { return probe_filesystem_full(-1, path, 0, UINT64_MAX, ret_fstype); } +int dissect_log_error(int log_level, int r, const char *name, const VeritySettings *verity); int dissect_image_file(const char *path, const VeritySettings *verity, const MountOptions *mount_options, const ImagePolicy *image_policy, DissectImageFlags flags, DissectedImage **ret); int dissect_image_file_and_warn(const char *path, const VeritySettings *verity, const MountOptions *mount_options, const ImagePolicy *image_policy, DissectImageFlags flags, DissectedImage **ret); int dissect_loop_device(LoopDevice *loop, const VeritySettings *verity, const MountOptions *mount_options, const ImagePolicy *image_policy, DissectImageFlags flags, DissectedImage **ret);