summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkoverstreet <kent.overstreet@gmail.com>2024-04-15 18:25:41 -0400
committerGitHub <noreply@github.com>2024-04-15 18:25:41 -0400
commitcf44deafe69a691d9f2087155b8943e600093394 (patch)
treed23da2057a2ae711b1079426e4fed5711df39469
parent5aaa6422b6fdc9cda8f808f7152df2073626b1bd (diff)
parent825062222c966b09c222fbc52966da04062c5af4 (diff)
Merge pull request #251 from tasleson/handle_dev_symlink
mount: canonicalize device path for single device node
-rw-r--r--src/commands/cmd_mount.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/commands/cmd_mount.rs b/src/commands/cmd_mount.rs
index 53a20217..8d0e2e90 100644
--- a/src/commands/cmd_mount.rs
+++ b/src/commands/cmd_mount.rs
@@ -4,6 +4,7 @@ use clap::Parser;
use uuid::Uuid;
use std::io::{stdout, IsTerminal};
use std::path::PathBuf;
+use std::fs;
use crate::key;
use crate::key::UnlockPolicy;
use std::ffi::{CString, c_char, c_void};
@@ -125,11 +126,13 @@ fn get_devices_by_uuid(uuid: Uuid) -> anyhow::Result<Vec<(PathBuf, bch_sb_handle
fn get_uuid_for_dev_node(device: &std::path::PathBuf) -> anyhow::Result<Option<Uuid>> {
let mut udev = udev::Enumerator::new()?;
+ let canonical = fs::canonicalize(device)?;
+
udev.match_subsystem("block")?;
for dev in udev.scan_devices()?.into_iter() {
if let Some(devnode) = dev.devnode() {
- if devnode == device {
+ if devnode == canonical {
let devnode_owned = devnode.to_owned();
let sb_result = read_super_silent(&devnode_owned);
if let Ok(sb) = sb_result {