@@ -67,7 +67,7 @@ pub struct Inode {
67
67
pub doubly_indirect_block : Option < u32 > , //二级索引,第14个块
68
68
pub triply_indirect_block : Option < u32 > , //三级索引,第15个块
69
69
}
70
-
70
+ # [ derive ( Debug ) ]
71
71
struct DataBlock {
72
72
pub data : [ u8 ; BLOCK_SIZE as usize ] , //每个文件块的大小为1kB
73
73
}
@@ -188,10 +188,8 @@ impl BlockGroup {
188
188
189
189
pub fn bg_mkdir ( & mut self , name : String , parent_inode : usize ) -> Option < fuser:: FileAttr > {
190
190
let child_inode = self . add_entry_to_directory ( name, parent_inode) ;
191
- let t = self . add_entry_to_directory ( "." . to_string ( ) , child_inode) ;
192
- dbg ! ( t) ;
193
- let m = self . add_entry_to_directory ( ".." . to_string ( ) , child_inode) ;
194
- dbg ! ( m) ;
191
+ self . add_entry_to_directory ( "." . to_string ( ) , child_inode) ;
192
+ self . add_entry_to_directory ( ".." . to_string ( ) , child_inode) ;
195
193
Some ( self . inode_table [ child_inode - 1 ] . get_file_attr ( child_inode as u64 ) )
196
194
}
197
195
@@ -202,9 +200,11 @@ impl BlockGroup {
202
200
. unwrap ( )
203
201
. direct_pointer
204
202
{
203
+ dbg ! ( & name) ;
205
204
if let Some ( index) = block_index {
206
205
let data_block = & self . data_block [ index as usize ] ;
207
206
let dirs = data_block. get_all_dirs_name ( ) ;
207
+ dbg ! ( & dirs) ;
208
208
for dir in dirs {
209
209
if dbg ! ( dir. name) == name {
210
210
let inode = & self . inode_table [ index as usize - 1 ] ;
@@ -229,7 +229,7 @@ impl BlockGroup {
229
229
pub fn add_entry_to_directory ( & mut self , name : String , parent_inode : usize ) -> usize {
230
230
let inode_index = self . get_inode ( ) ; //分配一个inode
231
231
let mut dir = DirectoryEntry :: new ( name, FileType :: Directory , inode_index as u32 , 0 ) ;
232
- let ( dir_data, dir_size) = dir. to_bytes ( ) ;
232
+ let ( dir_data, dir_size) = dir. to_bytes ( ) ; //修改了目录的大小
233
233
for & block_index in self
234
234
. inode_table
235
235
. get ( parent_inode - 1 )
@@ -442,21 +442,21 @@ impl DataBlock {
442
442
pub fn get_all_dirs_name ( & self ) -> Vec < DirectoryEntry > {
443
443
let mut offset = 0 ;
444
444
let mut dir_vec: Vec < DirectoryEntry > = vec ! [ ] ;
445
+ //dbg!(&self.data[..50]);
445
446
while offset + 6 <= BLOCK_SIZE {
446
- // dbg!(&self.data[..50]);
447
447
let file_size= self . data [ offset +4 ] ;
448
- // dbg!(file_size);
448
+ dbg ! ( file_size) ;
449
449
//bincode::deserialize(!(&self.data[4 + offset..6 + offset])).unwrap(); //从第四个字节开始解析2个字节为文件的大小
450
450
if file_size == 0 {
451
451
break ;
452
452
}
453
453
let dir: DirectoryEntry =
454
454
bincode:: deserialize ( & self . data [ offset..offset + file_size as usize ] ) . unwrap ( ) ;
455
- // dbg!(&dir);
455
+ dbg ! ( & dir) ;
456
456
dir_vec. push ( dir) ;
457
457
offset += file_size as usize ;
458
458
}
459
- dbg ! ( dir_vec)
459
+ dir_vec
460
460
}
461
461
462
462
pub fn rmdir_from_data_block ( & mut self , dir_name : & String ) {
0 commit comments