From 54df280b02cd5950928f194b402e86b5700e2436 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 14 Nov 2025 14:29:19 -0700 Subject: [PATCH] Use new scheme format in fpath --- src/bin/mount.rs | 5 +---- src/mount/redox/mod.rs | 5 +++-- src/mount/redox/scheme.rs | 33 ++++++++++++++++++--------------- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/bin/mount.rs b/src/bin/mount.rs index 506120fee7..dba7f3c6be 100644 --- a/src/bin/mount.rs +++ b/src/bin/mount.rs @@ -310,10 +310,7 @@ fn daemon( process::exit(0); } Err(err) => { - log::error!( - "failed to mount {} to {}: {}", - path, mountpoint, err - ); + log::error!("failed to mount {} to {}: {}", path, mountpoint, err); } } } diff --git a/src/mount/redox/mod.rs b/src/mount/redox/mod.rs index d72997d8f1..a559957435 100644 --- a/src/mount/redox/mod.rs +++ b/src/mount/redox/mod.rs @@ -20,12 +20,13 @@ where F: FnOnce(&Path) -> T, { let mountpoint = mountpoint.as_ref(); - let socket = Socket::create(&format!("{}", mountpoint.display()))?; + let scheme_name = format!("{}", mountpoint.display()); + let socket = Socket::create(&scheme_name)?; let mounted_path = format!("/scheme/{}", mountpoint.display()); let res = callback(Path::new(&mounted_path)); - let mut scheme = FileScheme::new(format!("{}", mountpoint.display()), filesystem, &socket); + let mut scheme = FileScheme::new(scheme_name, mounted_path, filesystem, &socket); while IS_UMT.load(Ordering::SeqCst) == 0 { let req = match socket.next_request(SignalBehavior::Restart)? { None => break, diff --git a/src/mount/redox/scheme.rs b/src/mount/redox/scheme.rs index c7f0a976b3..2226c55df5 100644 --- a/src/mount/redox/scheme.rs +++ b/src/mount/redox/scheme.rs @@ -29,7 +29,8 @@ use crate::{Disk, FileSystem, Node, Transaction, TreeData, TreePtr, BLOCK_SIZE}; use super::resource::{DirResource, Entry, FileResource, Resource}; pub struct FileScheme<'sock, D: Disk> { - name: String, + scheme_name: String, + mounted_path: String, pub(crate) fs: FileSystem, socket: &'sock Socket, next_id: AtomicUsize, @@ -41,9 +42,15 @@ pub struct FileScheme<'sock, D: Disk> { } impl<'sock, D: Disk> FileScheme<'sock, D> { - pub fn new(name: String, fs: FileSystem, socket: &'sock Socket) -> FileScheme<'sock, D> { + pub fn new( + scheme_name: String, + mounted_path: String, + fs: FileSystem, + socket: &'sock Socket, + ) -> FileScheme<'sock, D> { FileScheme { - name, + scheme_name, + mounted_path, fs, socket, next_id: AtomicUsize::new(1), @@ -143,7 +150,7 @@ impl<'sock, D: Disk> FileScheme<'sock, D> { // println!("Open '{}' {:X}", &path, flags); //TODO: try to move things into one transaction - let scheme_name = &self.name; + let scheme_name = &self.scheme_name; let mut nodes = Vec::new(); let node_opt = self .fs @@ -432,7 +439,7 @@ impl<'sock, D: Disk> SchemeSync for FileScheme<'sock, D> { // println!("Rmdir '{}'", path); - let scheme_name = &self.name; + let scheme_name = &self.scheme_name; self.fs.tx(|tx| { let mut nodes = Vec::new(); @@ -472,7 +479,7 @@ impl<'sock, D: Disk> SchemeSync for FileScheme<'sock, D> { // println!("Unlink '{}'", path); - let scheme_name = &self.name; + let scheme_name = &self.scheme_name; let unlink_result = self.fs.tx(|tx| { let mut nodes = Vec::new(); @@ -587,15 +594,11 @@ impl<'sock, D: Disk> SchemeSync for FileScheme<'sock, D> { fn fpath(&mut self, id: usize, buf: &mut [u8], _ctx: &CallerCtx) -> Result { // println!("Fpath {}, {:X} {}", id, buf.as_ptr() as usize, buf.len()); if let Some(file) = self.files.get(&id) { - let name = self.name.as_bytes(); + let mounted_path = self.mounted_path.as_bytes(); let mut i = 0; - while i < buf.len() && i < name.len() { - buf[i] = name[i]; - i += 1; - } - if i < buf.len() { - buf[i] = b':'; + while i < buf.len() && i < mounted_path.len() { + buf[i] = mounted_path[i]; i += 1; } if i < buf.len() { @@ -650,7 +653,7 @@ impl<'sock, D: Disk> SchemeSync for FileScheme<'sock, D> { return Err(Error::new(EPERM)); } - let scheme_name = &self.name; + let scheme_name = &self.scheme_name; self.fs.tx(|tx| { let _orig_parent_ptr = match file.parent_ptr_opt() { Some(some) => some, @@ -757,7 +760,7 @@ impl<'sock, D: Disk> SchemeSync for FileScheme<'sock, D> { return Err(Error::new(EPERM)); } - let scheme_name = &self.name; + let scheme_name = &self.scheme_name; self.fs.tx(|tx| { let orig_parent_ptr = match file.parent_ptr_opt() { Some(some) => some,