for perf
+9
-5
src/fs.rs
+9
-5
src/fs.rs
···
1
-
use std::time::{self, SystemTime, UNIX_EPOCH, Duration};
2
3
use atrium_repo::{Repository, blockstore::AsyncBlockStoreRead};
4
use futures::StreamExt;
···
30
pub struct PdsFs<R> {
31
repos: IndexMap<String, Repository<R>>,
32
inodes: IndexSet<PdsFsEntry>,
33
}
34
35
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
···
112
PdsFs {
113
repos: Default::default(),
114
inodes: IndexSet::from([PdsFsEntry::Zero, PdsFsEntry::Root]),
115
}
116
}
117
···
185
let did = self.inodes[col.parent].unwrap_did();
186
let repo = &mut self.repos[did];
187
let key = format!("{}/{}", col.nsid, r.rkey);
188
-
let rt = tokio::runtime::Runtime::new().unwrap();
189
-
let size = rt
190
.block_on(repo.get_raw::<ipld_core::ipld::Ipld>(&key))
191
.ok()
192
.flatten()
···
402
_lock: Option<u64>,
403
reply: fuser::ReplyData,
404
) {
405
-
let rt = tokio::runtime::Runtime::new().unwrap();
406
if let Some(PdsFsEntry::Record(r)) = self.inodes.get_index(ino as usize) {
407
let col = self.inodes[r.parent].unwrap_collection();
408
let did = self.inodes[col.parent].unwrap_did();
409
let repo = &mut self.repos[did];
410
let key = format!("{}/{}", col.nsid, r.rkey);
411
412
-
if let Ok(Some(val)) = rt.block_on(repo.get_raw::<ipld_core::ipld::Ipld>(&key)) {
413
reply.data(&serde_json::to_string(&val).unwrap().as_bytes()[offset as usize..]);
414
return;
415
}
···
1
+
use std::time::{self, Duration, SystemTime, UNIX_EPOCH};
2
3
use atrium_repo::{Repository, blockstore::AsyncBlockStoreRead};
4
use futures::StreamExt;
···
30
pub struct PdsFs<R> {
31
repos: IndexMap<String, Repository<R>>,
32
inodes: IndexSet<PdsFsEntry>,
33
+
rt: tokio::runtime::Runtime,
34
}
35
36
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
···
113
PdsFs {
114
repos: Default::default(),
115
inodes: IndexSet::from([PdsFsEntry::Zero, PdsFsEntry::Root]),
116
+
rt: tokio::runtime::Runtime::new().unwrap(),
117
}
118
}
119
···
187
let did = self.inodes[col.parent].unwrap_did();
188
let repo = &mut self.repos[did];
189
let key = format!("{}/{}", col.nsid, r.rkey);
190
+
let size = self
191
+
.rt
192
.block_on(repo.get_raw::<ipld_core::ipld::Ipld>(&key))
193
.ok()
194
.flatten()
···
404
_lock: Option<u64>,
405
reply: fuser::ReplyData,
406
) {
407
if let Some(PdsFsEntry::Record(r)) = self.inodes.get_index(ino as usize) {
408
let col = self.inodes[r.parent].unwrap_collection();
409
let did = self.inodes[col.parent].unwrap_did();
410
let repo = &mut self.repos[did];
411
let key = format!("{}/{}", col.nsid, r.rkey);
412
413
+
if let Ok(Some(val)) = self
414
+
.rt
415
+
.block_on(repo.get_raw::<ipld_core::ipld::Ipld>(&key))
416
+
{
417
reply.data(&serde_json::to_string(&val).unwrap().as_bytes()[offset as usize..]);
418
return;
419
}
History
1 round
0 comments
danabra.mov
submitted
#0
expand 0 comments
closed without merging