mount: prefer boot disk ESP and run cargo fmt
* choose ESP matching the primary data disk when multiple ESPs exist, falling back gracefully for single-disk layouts * keep new helper to normalize device names and reuse the idempotent mount logic * apply cargo fmt across the tree
This commit is contained in:
@@ -186,7 +186,10 @@ pub fn discover(filter: &DeviceFilter) -> Result<Vec<Disk>> {
|
||||
discover_with_provider(&provider, filter)
|
||||
}
|
||||
|
||||
fn discover_with_provider<P: DeviceProvider>(provider: &P, filter: &DeviceFilter) -> Result<Vec<Disk>> {
|
||||
fn discover_with_provider<P: DeviceProvider>(
|
||||
provider: &P,
|
||||
filter: &DeviceFilter,
|
||||
) -> Result<Vec<Disk>> {
|
||||
let mut candidates = provider.list_block_devices()?;
|
||||
// Probe properties if provider needs to enrich
|
||||
for d in &mut candidates {
|
||||
@@ -210,10 +213,15 @@ fn discover_with_provider<P: DeviceProvider>(provider: &P, filter: &DeviceFilter
|
||||
.collect();
|
||||
|
||||
if filtered.is_empty() {
|
||||
return Err(Error::Device("no eligible disks found after applying filters".to_string()));
|
||||
return Err(Error::Device(
|
||||
"no eligible disks found after applying filters".to_string(),
|
||||
));
|
||||
}
|
||||
|
||||
debug!("eligible disks: {:?}", filtered.iter().map(|d| &d.path).collect::<Vec<_>>());
|
||||
debug!(
|
||||
"eligible disks: {:?}",
|
||||
filtered.iter().map(|d| &d.path).collect::<Vec<_>>()
|
||||
);
|
||||
Ok(filtered)
|
||||
}
|
||||
|
||||
@@ -259,9 +267,10 @@ fn read_disk_size_bytes(name: &str) -> Result<u64> {
|
||||
let p = sys_block_path(name).join("size");
|
||||
let sectors = fs::read_to_string(&p)
|
||||
.map_err(|e| Error::Device(format!("read {} failed: {}", p.display(), e)))?;
|
||||
let sectors: u64 = sectors.trim().parse().map_err(|e| {
|
||||
Error::Device(format!("parse sectors for {} failed: {}", name, e))
|
||||
})?;
|
||||
let sectors: u64 = sectors
|
||||
.trim()
|
||||
.parse()
|
||||
.map_err(|e| Error::Device(format!("parse sectors for {} failed: {}", name, e)))?;
|
||||
Ok(sectors.saturating_mul(512))
|
||||
}
|
||||
|
||||
@@ -287,11 +296,7 @@ fn read_optional_string(p: PathBuf) -> Option<String> {
|
||||
while s.ends_with('\n') || s.ends_with('\r') {
|
||||
s.pop();
|
||||
}
|
||||
if s.is_empty() {
|
||||
None
|
||||
} else {
|
||||
Some(s)
|
||||
}
|
||||
if s.is_empty() { None } else { Some(s) }
|
||||
}
|
||||
Err(_) => None,
|
||||
}
|
||||
@@ -324,9 +329,27 @@ mod tests {
|
||||
fn filter_by_size_and_include_exclude() {
|
||||
let provider = MockProvider {
|
||||
disks: vec![
|
||||
Disk { path: "/dev/sda".into(), size_bytes: 500 * 1024 * 1024 * 1024, rotational: true, model: None, serial: None }, // 500 GiB
|
||||
Disk { path: "/dev/nvme0n1".into(), size_bytes: 128 * 1024 * 1024 * 1024, rotational: false, model: None, serial: None }, // 128 GiB
|
||||
Disk { path: "/dev/loop0".into(), size_bytes: 8 * 1024 * 1024 * 1024, rotational: false, model: None, serial: None }, // 8 GiB pseudo (but mock provider supplies it)
|
||||
Disk {
|
||||
path: "/dev/sda".into(),
|
||||
size_bytes: 500 * 1024 * 1024 * 1024,
|
||||
rotational: true,
|
||||
model: None,
|
||||
serial: None,
|
||||
}, // 500 GiB
|
||||
Disk {
|
||||
path: "/dev/nvme0n1".into(),
|
||||
size_bytes: 128 * 1024 * 1024 * 1024,
|
||||
rotational: false,
|
||||
model: None,
|
||||
serial: None,
|
||||
}, // 128 GiB
|
||||
Disk {
|
||||
path: "/dev/loop0".into(),
|
||||
size_bytes: 8 * 1024 * 1024 * 1024,
|
||||
rotational: false,
|
||||
model: None,
|
||||
serial: None,
|
||||
}, // 8 GiB pseudo (but mock provider supplies it)
|
||||
],
|
||||
};
|
||||
|
||||
@@ -346,7 +369,13 @@ mod tests {
|
||||
fn no_match_returns_error() {
|
||||
let provider = MockProvider {
|
||||
disks: vec![
|
||||
Disk { path: "/dev/sdb".into(), size_bytes: 50 * 1024 * 1024 * 1024, rotational: true, model: None, serial: None }, // 50 GiB
|
||||
Disk {
|
||||
path: "/dev/sdb".into(),
|
||||
size_bytes: 50 * 1024 * 1024 * 1024,
|
||||
rotational: true,
|
||||
model: None,
|
||||
serial: None,
|
||||
}, // 50 GiB
|
||||
],
|
||||
};
|
||||
|
||||
@@ -363,4 +392,4 @@ mod tests {
|
||||
other => panic!("unexpected error: {:?}", other),
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user