diff options
| author | Alejandro Soto <alejandro@34project.org> | 2021-12-28 19:08:33 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2021-12-28 19:43:45 -0600 |
| commit | 5308f999f95343d3d232e6e9258ea607f0a05dad (patch) | |
| tree | 7158dd1dc3320d0aeb07d364a48f853e238091b4 /src/fuse/session.rs | |
| parent | 47cbb3373edb5ddb882a2cbadb8fbf3d64732bf9 (diff) | |
Reimplement Forget/BatchForget
Diffstat (limited to '')
| -rw-r--r-- | src/fuse/session.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/fuse/session.rs b/src/fuse/session.rs index 6d43123..82db758 100644 --- a/src/fuse/session.rs +++ b/src/fuse/session.rs @@ -51,6 +51,7 @@ pub struct Endpoint<'a> { pub enum Dispatch<'o> { Lookup(Incoming<'o, ops::Lookup>), + Forget(Incoming<'o, ops::Forget>), Getattr(Incoming<'o, ops::Getattr>), Readlink(Incoming<'o, ops::Readlink>), Read(Incoming<'o, ops::Read>), @@ -112,7 +113,9 @@ impl Session { let (header, opcode) = InHeader::from_bytes(&buffer.0[..bytes])?; let body = match opcode { - proto::Opcode::Init => <&proto::InitIn>::toplevel_from(&buffer.0[HEADER_END..bytes])?, + proto::Opcode::Init => { + <&proto::InitIn>::toplevel_from(&buffer.0[HEADER_END..bytes], &header)? + } _ => { log::error!("First message from kernel is not Init, but {:?}", opcode); @@ -211,6 +214,7 @@ impl<'o> Dispatch<'o> { let common = match self { Lookup(incoming) => incoming.common, + Forget(incoming) => incoming.common, Getattr(incoming) => incoming.common, Readlink(incoming) => incoming.common, Read(incoming) => incoming.common, @@ -276,6 +280,7 @@ impl Endpoint<'_> { Destroy => return Ok(ControlFlow::Break(())), Lookup => dispatch!(Lookup), + Forget => dispatch!(Forget), Getattr => dispatch!(Getattr), Readlink => dispatch!(Readlink), Read => dispatch!(Read), @@ -283,6 +288,7 @@ impl Endpoint<'_> { Statfs => dispatch!(Statfs), Readdir => dispatch!(Readdir), Access => dispatch!(Access), + BatchForget => dispatch!(Forget), _ => { log::warn!("Not implemented: {}", common.header); @@ -456,7 +462,7 @@ fn try_op<'o, O: Operation<'o>>( where O::ReplyTail: Default, { - let body = match Structured::toplevel_from(&bytes[HEADER_END..header.len as usize]) { + let body = match Structured::toplevel_from(&bytes[HEADER_END..header.len as usize], &header) { Ok(body) => body, Err(error) => { log::error!("Parsing request {}: {}", header, error); |
