[文件系统] 一个简单文件系统的实现(7)

2020-05-21 00:00:00 函数 专区 订阅 付费 释放

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社区:[文件系统] 一个简单文件系统的实现

相关文章