Merge branch 'master' into 'master'

feat(redox): flocking

See merge request redox-os/redoxfs!112
This commit is contained in:
Jeremy Soller
2026-02-25 08:24:56 -07:00
5 changed files with 342 additions and 159 deletions
+15 -2
View File
@@ -1,4 +1,7 @@
use redox_scheme::{scheme::SchemeSync, RequestKind, Response, SignalBehavior, Socket};
use redox_scheme::{
scheme::{SchemeState, SchemeSync},
RequestKind, Response, SignalBehavior, Socket,
};
use std::io;
use std::path::Path;
use std::sync::atomic::Ordering;
@@ -25,6 +28,7 @@ where
let scheme_name = format!("{}", mountpoint.display());
let mounted_path = format!("/scheme/{}", mountpoint.display());
let mut state = SchemeState::new();
let mut scheme = FileScheme::new(scheme_name, mounted_path.clone(), filesystem, &socket);
redox_scheme::scheme::register_sync_scheme(
@@ -52,6 +56,15 @@ where
}
RequestKind::OnClose { id } => {
scheme.on_close(id);
state.on_close(id);
continue;
}
RequestKind::OnDetach { id, pid } => {
let Ok(inode) = scheme.inode(id) else {
log::warn!("RequestKind::OnDetach with invalid `id`");
continue;
};
state.on_detach(id, inode, pid);
continue;
}
_ => {
@@ -62,7 +75,7 @@ where
}
}
};
let response = req.handle_sync(&mut scheme);
let response = req.handle_sync(&mut scheme, &mut state);
if !socket.write_response(response, SignalBehavior::Restart)? {
break;
+1 -1
View File
@@ -493,7 +493,7 @@ impl<D: Disk> Resource<D> for FileResource {
let fmap_info = fmaps
.get_mut(&self.node_ptr.id())
.ok_or(Error::new(EBADFD))?;
if !fmap_info.in_use() {
// Notify filesystem of open
tx.on_open_node(self.node_ptr)?;
+7
View File
@@ -1153,4 +1153,11 @@ impl<'sock, D: Disk> SchemeSync for FileScheme<'sock, D> {
_ => Err(Error::new(EOPNOTSUPP)),
}
}
fn inode(&self, id: usize) -> Result<usize> {
let Some(Handle::Resource(resource)) = self.handles.get(&id) else {
return Err(Error::new(EBADF));
};
Ok(resource.node_ptr().id() as usize)
}
}