diff options
author | Chuyan Zhang <me@zcy.moe> | 2023-12-01 23:28:51 -0800 |
---|---|---|
committer | Chuyan Zhang <me@zcy.moe> | 2023-12-01 23:28:51 -0800 |
commit | 17b28b6f9f251a7ddccfd3d8d5daae7b1789bc34 (patch) | |
tree | e81f248dc7744481c6af82ab4a52d2b6cf30d564 /ayafs-core/src/lib.rs | |
parent | 4e8448778cdec05f994f0e2772432fd90b6219d5 (diff) | |
download | myfs-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.rs | 16 |
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()); |