summaryrefslogtreecommitdiff
path: root/ayafs-core/src/lib.rs
diff options
context:
space:
mode:
authorChuyan Zhang <me@zcy.moe>2023-12-01 23:28:51 -0800
committerChuyan Zhang <me@zcy.moe>2023-12-01 23:28:51 -0800
commit17b28b6f9f251a7ddccfd3d8d5daae7b1789bc34 (patch)
treee81f248dc7744481c6af82ab4a52d2b6cf30d564 /ayafs-core/src/lib.rs
parent4e8448778cdec05f994f0e2772432fd90b6219d5 (diff)
downloadmyfs-17b28b6f9f251a7ddccfd3d8d5daae7b1789bc34.tar.gz
myfs-17b28b6f9f251a7ddccfd3d8d5daae7b1789bc34.zip
fix inode write_back, fix remove
Diffstat (limited to 'ayafs-core/src/lib.rs')
-rw-r--r--ayafs-core/src/lib.rs16
1 files changed, 9 insertions, 7 deletions
diff --git a/ayafs-core/src/lib.rs b/ayafs-core/src/lib.rs
index db3ac28..d73619b 100644
--- a/ayafs-core/src/lib.rs
+++ b/ayafs-core/src/lib.rs
@@ -218,13 +218,15 @@ impl AyaFS {
while let Some((inode_index, dir_entry_map)) = self.dir_entry_map.pop_lru() {
debug!("writing back direntry map for inode {}", inode_index);
- let mut inode = self.get_inode(inode_index).unwrap().clone();
- self.write_back_direntry(
- inode_index,
- &mut inode,
- dir_entry_map,
- ).unwrap();
- self.update_inode(inode_index, inode);
+ if let Some(inode) = self.get_inode(inode_index) {
+ let mut inode = inode.clone();
+ self.write_back_direntry(
+ inode_index,
+ &mut inode,
+ dir_entry_map,
+ ).unwrap();
+ self.update_inode(inode_index, inode);
+ }
} // dir entry 的 write back 是写回到 block / inode cache 里, 所以要在前面
debug!("data_bitmap stopping at: {:?}", self.data_bitmap.peek());