46 строки
2.3 KiB
Diff
46 строки
2.3 KiB
Diff
From d5cb053cd93d516f516e0b748271b55f9dfb3a29 Mon Sep 17 00:00:00 2001
|
|
From: Lennart Poettering <lennart@poettering.net>
|
|
Date: Mon, 14 Feb 2022 13:35:27 +0100
|
|
Subject: [PATCH 1/2] gpt-auto: properly handle case where we can't determine
|
|
devno of /usr/ fs
|
|
|
|
get_block_device_harder() returns == 0 if the fs is valid, but it is not
|
|
backed by a single devno. (As opposed to returning > 0 if the devno is
|
|
valid). Let's catch this case and log a clear message, and don't bother
|
|
open the device in that case.
|
|
|
|
This is mostly cosmetical, as either way, systemd-gpt-auto-generator
|
|
doesn't work in scenarios like that.
|
|
|
|
Prompted-by: #22504
|
|
---
|
|
src/gpt-auto-generator/gpt-auto-generator.c | 8 ++++++--
|
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
|
|
index 64ca9bb2f9..28982a4c34 100644
|
|
--- a/src/gpt-auto-generator/gpt-auto-generator.c
|
|
+++ b/src/gpt-auto-generator/gpt-auto-generator.c
|
|
@@ -779,12 +779,16 @@ static int add_mounts(void) {
|
|
return btrfs_log_dev_root(LOG_ERR, r, "root file system");
|
|
if (r < 0)
|
|
return log_error_errno(r, "Failed to determine block device of root file system: %m");
|
|
- if (r == 0) { /* Not backed by block device */
|
|
+ if (r == 0) { /* Not backed by a single block device. (Could be NFS or so, or could be multi-device RAID or so) */
|
|
r = get_block_device_harder("/usr", &devno);
|
|
if (r == -EUCLEAN)
|
|
return btrfs_log_dev_root(LOG_ERR, r, "/usr");
|
|
if (r < 0)
|
|
- return log_error_errno(r, "Failed to determine block device of /usr file system: %m");
|
|
+ return log_error_errno(r, "Failed to determine block device of /usr/ file system: %m");
|
|
+ if (r == 0) { /* /usr/ not backed by single block device, either. */
|
|
+ log_debug("Neither root nor /usr/ file system are on a (single) block device.");
|
|
+ return 0;
|
|
+ }
|
|
}
|
|
} else if (r < 0)
|
|
return log_error_errno(r, "Failed to read symlink /run/systemd/volatile-root: %m");
|
|
--
|
|
2.37.3
|
|
|