linux下使用 sb设备的方法,Linux虚拟文件系统概述(2)get_sb

二、注册和加载文件系统

注册和注销一个文件系统时,使用下面的API:

#include

extern int register_filesystem(struct file_system_type *);

extern int unregister_filesystem(struct file_system_type *);

传递的参数file_system_type结构描述了注册的文件系统。当生成将一个设备挂载到文件空间的一个目录时,将调用相应文件系统所实现的get_sb()方法。接着,被挂载点的目录结构将被更新指向新文件系统的root inode节点。

在/proc/filesystems中可以看到在内核中注册的所有文件系统。

1、file_system_type结构

该结构对文件系统进行描述,在2.6.20内核中,其在include/linux/fs.h定义如下:

struct file_system_type {

const char *name;

int fs_flags;

int (*get_sb) (struct file_system_type *, int,

const char *, void *, struct vfsmount *);

void (*kill_sb) (struct super_block *);

struct module *owner;

struct file_system_type * next;

struct list_head fs_supers;

struct lock_class_key s_lock_key;

struct lock_class_key s_umount_key;

};

name:   文件系统类型名,如"ext2", "iso9660", "msdos"等

fs_flags: 几种文件系统flag标志(FS_REQUIRES_DEV, FS_NO_DCACHE等)

get_sb:  加载(mount)新的文件系统实例时会调用的方法。sb指super block

kill_sb: 卸载(unmount)文件系统实例时调用

owner:  VFS内部使用,大多数情况下,应该被初始化为 THIS_MODULE

next:  VFS内部使用,初始化为NULL

s_lock_key:

s_umount_key:

get_sb参数如下:

struct super_block *sb: superblock结构,该结构部分由vFS初始化,其余的在get_sb()方法中初始化

int flags:  挂载标志

const char *dev_name: 挂载的设备名

void *data:  挂载属性选项,通常为ASCII字符串

int silent:  出错时的处理方式

get_sb()方法必须superblock中指定的块设备是否包含该方法支持的文件系统。执行成功,就返回指向superblock的指针,出错则返回NULL

get_sb, kill_sb当然就是为了得到和销毁super block 了

s_op成员是get_sb中需要关注的项,它是一个指向结构"struct super_operations"的指针,该结构描述了文件系统的底层实现。

通常,一个文件系统使用get_sb()的具体实现中的一个,并提供fill_super方法。具体方法如下:

get_sb_bdev: 挂载块设备上的文件系统

get_sb_nodev:挂载无设备文件系统

get_sb_single:挂载在挂载点之间共享实例的文件系统

fill_super方法实现含有的变量如下:

struct super_block *sb: super_block结构,由fill_super()初始化

void *data:  挂载属性选项,通常为ASCII字符串

int silent:  出错时的处理方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值