diff --git a/src/lib.rs b/src/lib.rs index 79076dce7285ac79e191ffffb37836d402a97f1a..3ec4eec609f42ccf0de89b28f049f5a7a1e7c9a4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -303,7 +303,7 @@ impl CallRequest<V2> { gid: hack_gid, }; - let [a, b, c, d, _e, _f] = args.map(|a| a as usize); + let [a, b, c, d, e, _f] = args.map(|a| a as usize); let result = unsafe { use core::{slice, str}; match opcode { @@ -374,7 +374,9 @@ impl CallRequest<V2> { ), Opcode::Getdents => { DirentBuf::new(slice::from_raw_parts_mut(b as *mut u8, c), d as u16) - .map_or(Err(Error::new(EINVAL)), |buf| scheme.getdents(a, buf)) + .map_or(Err(Error::new(EINVAL)), |buf| { + scheme.getdents(a, buf, e as u64) + }) .map(|b| b.finalize()) } @@ -439,7 +441,7 @@ impl CallRequest<V2> { gid: hack_gid, }; - let [a, b, c, d, _e, _f] = args.map(|a| a as usize); + let [a, b, c, d, e, _f] = args.map(|a| a as usize); let result = unsafe { use core::{slice, str}; match opcode { @@ -524,7 +526,9 @@ impl CallRequest<V2> { Opcode::Getdents => { DirentBuf::new(slice::from_raw_parts_mut(b as *mut u8, c), d as u16) - .map_or(Err(Error::new(EINVAL)), |buf| scheme.getdents(a, buf)) + .map_or(Err(Error::new(EINVAL)), |buf| { + scheme.getdents(a, buf, e as u64) + }) .map(|b| b.map(|b| b.finalize())) .transpose()? } diff --git a/src/scheme.rs b/src/scheme.rs index 78a2b2aa40ebd10dbd62eca2c51fd5238086bea4..04a677908061fd79505b05a21bbde18ccd7b4e53 100644 --- a/src/scheme.rs +++ b/src/scheme.rs @@ -165,7 +165,12 @@ pub trait Scheme { } #[allow(unused_variables)] - fn getdents(&self, id: usize, buf: DirentBuf<&'_ mut [u8]>) -> Result<DirentBuf<&'_ mut [u8]>> { + fn getdents( + &self, + id: usize, + buf: DirentBuf<&'_ mut [u8]>, + opaque_offset: u64, + ) -> Result<DirentBuf<&'_ mut [u8]>> { Err(Error::new(EBADF)) } diff --git a/src/scheme_block.rs b/src/scheme_block.rs index c19ba2459fe0f3d14be650cf7698420764160507..1b6c3a071164f8a190f9566de097c6363a9c231d 100644 --- a/src/scheme_block.rs +++ b/src/scheme_block.rs @@ -175,6 +175,7 @@ pub trait SchemeBlock { &self, id: usize, buf: DirentBuf<&'_ mut [u8]>, + opaque_offset: u64, ) -> Result<Option<DirentBuf<&'_ mut [u8]>>> { Err(Error::new(EBADF)) } diff --git a/src/scheme_block_mut.rs b/src/scheme_block_mut.rs index 0e7a41b5986748deebaecb3c264cff1350dcf4ee..d7ddb1d418241e6a42dcc972415802884d813a04 100644 --- a/src/scheme_block_mut.rs +++ b/src/scheme_block_mut.rs @@ -181,6 +181,7 @@ pub trait SchemeBlockMut { &mut self, id: usize, buf: DirentBuf<&'_ mut [u8]>, + opaque_offset: u64, ) -> Result<Option<DirentBuf<&'_ mut [u8]>>> { Err(Error::new(EBADF)) } diff --git a/src/scheme_mut.rs b/src/scheme_mut.rs index def9c5e79cdc6da5c3d7e26080fd0735c055341d..24cd632dac1a082e58995d585809bbb5bdb1727e 100644 --- a/src/scheme_mut.rs +++ b/src/scheme_mut.rs @@ -169,6 +169,7 @@ pub trait SchemeMut { &mut self, id: usize, buf: DirentBuf<&'_ mut [u8]>, + opaque_offset: u64, ) -> Result<DirentBuf<&'_ mut [u8]>> { Err(Error::new(EBADF)) }