summaryrefslogtreecommitdiff
path: root/src/boot/bootctl.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2022-11-18 18:05:53 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-11-19 05:27:50 +0900
commitaf1bed8e83c3d380d1eb0b9147684b76d1ee4df0 (patch)
tree5fe2b205ec1f7e19ef55eb39532497326b8aab70 /src/boot/bootctl.c
parentb9e7f22c2d80930cad36ae53e66e42a2996dca4a (diff)
downloadsystemd-af1bed8e83c3d380d1eb0b9147684b76d1ee4df0.tar.gz
bootctl: rework how we handle referenced but absent EFI boot entries
Follow-up for #25368. Let's consider ENOENT an expected error, and just debug log about it (though, let's suffix it with `, ignoring.`). All other errors will log loudly, as they are unexpected errors.
Diffstat (limited to 'src/boot/bootctl.c')
-rw-r--r--src/boot/bootctl.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c
index afda914d52..2565f54586 100644
--- a/src/boot/bootctl.c
+++ b/src/boot/bootctl.c
@@ -585,8 +585,12 @@ static int print_efi_option(uint16_t id, int *n_printed, bool in_order) {
assert(n_printed);
r = efi_get_boot_option(id, &title, &partition, &path, &active);
+ if (r == -ENOENT) {
+ log_debug_errno(r, "Boot option 0x%04X referenced but missing, ignoring: %m", id);
+ return 0;
+ }
if (r < 0)
- return log_debug_errno(r, "Failed to read boot option 0x%04X: %m", id);
+ return log_error_errno(r, "Failed to read boot option 0x%04X: %m", id);
/* print only configured entries with partition information */
if (!path || sd_id128_is_null(partition)) {