summaryrefslogtreecommitdiffstats
path: root/src/gpt-auto-generator
diff options
context:
space:
mode:
authorMike Yuan <me@yhndnzj.com>2023-07-29 14:05:58 +0200
committerMike Yuan <me@yhndnzj.com>2023-07-29 14:06:41 +0200
commit7893a547ebcee007dbc6119373d3e5d809f221fe (patch)
tree3d80d35555f6da8406700de1e1934b9aac4aca8b /src/gpt-auto-generator
parentfstab-util: add fstab_has_node (diff)
downloadsystemd-7893a547ebcee007dbc6119373d3e5d809f221fe.tar.xz
systemd-7893a547ebcee007dbc6119373d3e5d809f221fe.zip
gpt-auto: don't mount ESP if there's an fstab entry for it
Follow-up for #28511 Fixes #28550
Diffstat (limited to 'src/gpt-auto-generator')
-rw-r--r--src/gpt-auto-generator/gpt-auto-generator.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
index 4465038198..585aaae2ed 100644
--- a/src/gpt-auto-generator/gpt-auto-generator.c
+++ b/src/gpt-auto-generator/gpt-auto-generator.c
@@ -574,10 +574,17 @@ static int add_partition_esp(DissectedPartition *p, bool has_xbootldr) {
return 0;
}
+ /* Check if there's an existing fstab entry for ESP. If so, we just skip the gpt-auto logic. */
+ r = fstab_has_node(p->node);
+ if (r < 0)
+ return log_error_errno(r,
+ "Failed to check if fstab entry for device '%s' exists: %m", p->node);
+ if (r > 0)
+ return 0;
+
/* If /boot/ is present, unused, and empty, we'll take that.
* Otherwise, if /efi/ is unused and empty (or missing), we'll take that.
- * Otherwise, we do nothing.
- */
+ * Otherwise, we do nothing. */
if (!has_xbootldr && slash_boot_exists()) {
r = slash_boot_in_fstab();
if (r < 0)
@@ -590,16 +597,6 @@ static int add_partition_esp(DissectedPartition *p, bool has_xbootldr) {
esp_path = "/boot";
id = "boot";
}
- } else {
- /* Check if the fstab entry for /boot/ is already the ESP. If so, we don't need to
- * check /efi/ or duplicate the mount there. */
- r = fstab_is_mount_point_full("/boot", p->node);
- if (r < 0)
- return log_error_errno(r,
- "Failed to check if fstab entry for /boot uses the same device as '%s': %m",
- p->node);
- if (r > 0)
- return 0;
}
}