在Linux内核中,为什么inode-> i_count在增长?

问题描述 投票:0回答:1

我很确定,要知道使用文件的计数器引用或进程数是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);
linux linux-kernel kernel-module
1个回答
0
投票
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'。

© www.soinside.com 2019 - 2024. All rights reserved.