我很确定,要知道使用文件的计数器引用或进程数是inode结构中的i_count。
但是,每次我重新加载代码时,我都会看到此计数器...正在计数!?我只想知道是否使用了索引节点,以便安全地将其删除。
pr_info("inode->i_count.counter : %d\n", inode->i_count.counter);
我在做什么错!!
这是我的代码:
/* Read parent directory index and put in RAM from the disk*/
bh = sb_bread(sb, OUICHEFS_INODE(dir)->index_block);
/* Get the block ifself */
dir_block = (struct ouichefs_dir_block *)bh->b_data;
/* Search for inode in parent index and get number of subfiles */
while(i < OUICHEFS_MAX_SUBFILES && dir_block->files[i].inode != 0){
ino = dir_block->files[i].inode;
inode = ouichefs_iget(sb, ino);
pr_info("inode->i_count.counter : %d\n", inode->i_count.counter);
pr_info("inode->i_dio_count.counter : %d\n", inode->i_dio_count.counter);
pr_info("inode->i_nlink : %u\n", inode->i_nlink);
// si pas fichier ou utilisé
if (S_ISDIR(inode->i_mode) /*|| inode->i_count.counter*/){
++i;
continue;
}
if(inode->i_mtime.tv_sec < min){
min = inode->i_mtime.tv_sec;
ino_ancien = ino;
}
++i;
}
mark_buffer_dirty(bh);
brelse(bh);
ino = dir_block->files[i].inode;
inode = ouichefs_iget(sb, ino); // <-- increase i_count
pr_info("inode->i_count.counter : %d\n", inode->i_count.counter);
请检查'ouichefs_iget'的源代码。
通常,一个名为'xxx_get'的函数会随着其引用计数的增加而返回'xxx'。