This commit is contained in:
Olivier 'reivilibre' 2022-01-22 11:28:17 +00:00
parent b23202f39a
commit 05def61ee6
2 changed files with 29 additions and 11 deletions

View File

@ -493,7 +493,6 @@ impl Filesystem for OliveFilesystem {
// TODO(performance): we could easily do this async (just respond Ok now, drop the buffers // TODO(performance): we could easily do this async (just respond Ok now, drop the buffers
// and schedule the message in the background). // and schedule the message in the background).
let requester = self.requester.clone(); let requester = self.requester.clone();
let buffers = self.buffers.clone();
let file_handle: u32 = fh.try_into().unwrap(); let file_handle: u32 = fh.try_into().unwrap();
// TODO flush(): do we need to do anything about this? // TODO flush(): do we need to do anything about this?
@ -502,7 +501,6 @@ impl Filesystem for OliveFilesystem {
async move { async move {
match requester.release(file_handle).await? { match requester.release(file_handle).await? {
DataResponse::Success(()) => { DataResponse::Success(()) => {
buffers.dir_handles.write().await.remove(&file_handle);
reply.ok(); reply.ok();
} }
DataResponse::Error { code, message } => { DataResponse::Error { code, message } => {
@ -513,7 +511,7 @@ impl Filesystem for OliveFilesystem {
Ok(()) Ok(())
}, },
"releasedir", "release",
); );
} }

View File

@ -38,14 +38,34 @@ pub struct OpenMode {
#[derive(Serialize, Deserialize, Debug, Clone)] #[derive(Serialize, Deserialize, Debug, Clone)]
/// Sent by the client on any data stream. /// Sent by the client on any data stream.
pub enum DataCommand { pub enum DataCommand {
GetAttr { vnode: VnodeId }, GetAttr {
OpenDir { vnode: VnodeId }, vnode: VnodeId,
ReadDir { dir_handle: u32 }, },
ReleaseDir { dir_handle: u32 }, OpenDir {
Lookup { dir_vnode: VnodeId, name: String }, vnode: VnodeId,
OpenFile { vnode: VnodeId, mode: OpenMode }, },
ReleaseFile { file_handle: u32 }, ReadDir {
ReadFile { file_handle: u32, offset: i64, size: u32 }, dir_handle: u32,
},
ReleaseDir {
dir_handle: u32,
},
Lookup {
dir_vnode: VnodeId,
name: String,
},
OpenFile {
vnode: VnodeId,
mode: OpenMode,
},
ReleaseFile {
file_handle: u32,
},
ReadFile {
file_handle: u32,
offset: i64,
size: u32,
},
} }
pub trait DataResponseBase: Serialize + DeserializeOwned + Debug + Clone + 'static {} pub trait DataResponseBase: Serialize + DeserializeOwned + Debug + Clone + 'static {}