[文件系统] 一个简单文件系统的实现(7)
gt_put_super(定义在super.c中)
static void gt_put_super(struct super_block *sb){
struct gt_sb_info *sbi=GT_SB(sb);
brelse(sbi->s_sbh);
sb->s_fs_info=NULL;
kfree(sbi);
}
这个函数释放掉磁盘超级块所在的缓冲块,释放掉内存超级块
gt_statfs(定义在super.c中)
static int gt_statfs(struct dentry *dentry,struct kstatfs *buf){
struct gt_sb_info * sbi=GT_SB(dentry->d_sb);
struct gt_super_block *gs=sbi->s_gs;
buf->f_type=dentry->d_sb->s_magic;
buf->f_bsize=dentry->d_sb->s_blocksize;
buf->f_blocks=(gs->s_blocks_count-gs->s_first_data_block);
buf->f_bfree=gt_count_free_blocks(sbi);
buf->f_bavail=buf->f_bfree;
buf->f_ffree=gt_count_free_inodes(sbi);
buf->f_namelen=GT_NAME_LEN;
return ;
}
这个函数获取文件系统状态
到这里超级块的操作就完成了,接下来是普通索引节点操作,只需要一个清空函数,其他的调用vfs默认的函数
const struct inode_operations gt_file_inode_operations ={
.truncate =gt_truncate,
};
文章来源CU社区:[文件系统] 一个简单文件系统的实现
相关文章