rust-bootupd/0001-install-attempt-to-use-an-already-mounted-ESP-at-the.patch
Huijing Hei 5cdf573a73
Backport the PR that will use an already mounted ESP for installation
Fix the building error without device.
See 593b94a175
2025-06-26 10:04:34 +08:00

52 lines
2.2 KiB
Diff

From 593b94a1750c1d71f5a37365633afdd99cfb714b Mon Sep 17 00:00:00 2001
From: Huijing Hei <hhei@redhat.com>
Date: Wed, 25 Jun 2025 12:14:02 +0800
Subject: [PATCH] install: attempt to use an already mounted ESP at the target
Let's attempt to use an already mounted ESP at the target
dest_root if one is already mounted there in a known ESP location,
if failed, will fallback to mount ESP partition of the device.
See https://github.com/coreos/coreos-assembler/pull/4161
---
src/efi.rs | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/src/efi.rs b/src/efi.rs
index 1adc3d6..b8fc24c 100644
--- a/src/efi.rs
+++ b/src/efi.rs
@@ -345,14 +345,22 @@ impl Component for Efi {
let srcdir_name = component_updatedirname(self);
let ft = crate::filetree::FileTree::new_from_dir(&src_root.sub_dir(&srcdir_name)?)?;
- // Using `blockdev` to find the partition instead of partlabel because
- // we know the target install toplevel device already.
- let esp_device = blockdev::get_esp_partition(device)?
- .ok_or_else(|| anyhow::anyhow!("Failed to find ESP device"))?;
-
- let destpath = &self.ensure_mounted_esp(Path::new(dest_root), Path::new(&esp_device))?;
+ // Let's attempt to use an already mounted ESP at the target
+ // dest_root if one is already mounted there in a known ESP location.
+ let destpath = if let Some(destdir) = self.get_mounted_esp(Path::new(dest_root))? {
+ destdir
+ } else {
+ // Using `blockdev` to find the partition instead of partlabel because
+ // we know the target install toplevel device already.
+ if device.is_empty() {
+ anyhow::bail!("Device value not provided");
+ }
+ let esp_device = blockdev::get_esp_partition(device)?
+ .ok_or_else(|| anyhow::anyhow!("Failed to find ESP device"))?;
+ self.mount_esp_device(Path::new(dest_root), Path::new(&esp_device))?
+ };
- let destd = &openat::Dir::open(destpath)
+ let destd = &openat::Dir::open(&destpath)
.with_context(|| format!("opening dest dir {}", destpath.display()))?;
validate_esp_fstype(destd)?;
--
2.49.0