二、注册和加载文件系统

注册和注销一个文件系统时,使用下面的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:  出错时的处理方式

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

  1. linux rsa密钥生成工具,linux下生成rsa密钥的方法

    首先生成密钥,用命令ssh-keygen –t rsa 运行后可以一直空格,生成密钥,id_rsa和id_rsa.pub文件 ,默认放在/root/.ssh/下,.ssh文件是隐藏的,要显示隐藏文件才 ...

  2. kill -9 进程号杀不死可以用下面的杀掉 Linux下强制杀死进程的方法详解

    常规篇: 首先,用ps查看进程,方法如下: $ ps -ef -- smx 1822 1 0 11:38 ? 00:00:49 gnome-terminal smx 1823 1822 0 11:38 ...

  3. linux摄像头 自动对焦,基于H3在Linux下驱动OV5640摄像头的方法与流程

    技术特征: 1.基于H3在Linux下驱动OV5640摄像头的方法,其特征在于,包括如下步骤: S1打开OV5640摄像头所对应的设备文件/dev/videoX: S2为OV5640摄像头驱动添加读写 ...

  4. linux u盘文件乱码,轻松解决Linux下U盘乱码的方法

    很少情况会在Linux系统下使用U盘,但是最近有朋友在Linux系统下加载U盘设备的时候发现U盘内的文件出现了乱码现象,这该怎么办呢?很多朋友对Linux系统又不太熟悉,不知道该怎么操作,没关系,让小 ...

  5. 什么是 Linux 下的 platform 设备驱动

    Linux下的字符设备驱动一般都比较简单,只是对IO进行简单的读写操作.但是I2C.SPI.LCD.USB等外设的驱动就比较复杂了,需要考虑到驱动的可重用性,以避免内核中存在大量重复代码,为此人们提出 ...

  6. linux如何卸载mysql5.7,Linux下Mysql5.7.19卸载方法

    Linux下Mysql5.7.19卸载方法 1.查找以前是否装有mysql 命令:rpm -qa|grep -i mysql 可以看到mysql的两个包: mysql-*..*.RHEL** mysq ...

  7. Linux使用fdisk命令无法打开,linux下fdisk命令的使用方法

    linux下fdisk命令的使用方法 (2006-07-13 13:35:57) 在学习 Linux 的过程中,安装 Linux 是每一个初学者的第一个门槛.在这个过程中间,最大的困惑莫过于给硬盘进行 ...

  8. linux arp攻击教程,Linux下防御arp攻击的方法

    Linux下防御arp攻击的方法 发布时间:2008-09-08 17:09:19   作者:佚名   我要评论 1.获取同一网段下所有机器MAC地址的办法 机房有机器中毒,发arp包,通过arpsp ...

  9. 如何在linux系统下修改mysql密码_如何在linux下修改mysql数据库密码?linux修改数据库密码的方法...

    本篇文章给大家带来的内容是介绍如何在linux下修改mysql数据库密码?linux修改数据库密码的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. Linux下修改Mysql的 ...

最新文章

  1. 使用jq.lazyload.js,解决设置loading图片的问题
  2. VirtualBox虚拟机导出导入实践
  3. EF 从sqlserver2008 迁移到 2005出现的BUG
  4. 工作小总结(字符串包含,获取当前页面的url等系列问题)
  5. Netlink 内核实现分析(二):通信
  6. Install Toad for Oracle 10.6 on Winows 7 X64
  7. 常用的台式计算机,台式电脑常见简单故障排除
  8. c语言数字语音播报,金额数字语音播报
  9. 苹果电脑虚拟键盘怎么打开
  10. 笔记本计算机无线开关在哪里,笔记本的WIFI开关在哪里 笔记本WIFI打开方法
  11. 【C语言】求一个数有多少位
  12. *皮亚诺关于公理4的一段语录解析 皮亚诺读后之六
  13. php画梯形,科学网—梯形法误差 - 张江敏的博文
  14. 3分钟通过一个App的演示深入理解区块链运行原理
  15. 顺丰--Java丰桥接口整体封装(下单、查询、打印)
  16. 使用声音传感器的Arduino控制的音乐喷泉
  17. 线性代数基础2--齐次线性方程组的解及方程组解的总结
  18. Autodesk Genuine Service2020删除
  19. 【云计算】CentOS7 上配置Openstack(单机)bug记录
  20. cocos creator2.4.4 英文卡牌游戏源码H5+安卓+IOS三端源码

热门文章

  1. 转 --- 恢复误删数据
  2. 职场必备, Word技巧大全
  3. nuc977 配置nfs
  4. requestPayment:fail parameter error: parameter.non…r.signType should be String instead of Undefined
  5. CT值以及窗宽窗位(未完待续)
  6. 校园网免认证停机卡免流服务器被迫关停
  7. 【VK】商品多规格SKU选择器组件豪华版(uniapp版,可编译成H5、APP、各大小程序)
  8. MariaDB/Mysql数据库进阶知识
  9. android xmlpullparser 编译出错,将Android支持库更新为23.2.0导致错误:XmlPullParserException...
  10. 4K超高清电视全面支持HDMI技术