FAT driver学习笔记(一)

1,基本结构体的作用:


Struct

Description

struct fat_boot_sector

Boot sector

Struct fat_boot_fsinfo

Fsinfo信息

struct msdos_dir_entry

表示目录项,短文件名

struct msdos_dir_slot

表示长文件名

struct  fat_slot_info

目录下目录项信息

struct fat_entry

表示fat表项

struct msdos_sb_info

Super block

struct fat_mount_options

Mount 选项

struct  msdos_inode_info

Fat filesystem对应的inode信息

struct fat_cache

Fat_cache

struct fat_cache_id

用于保持在链表中找到的离fclus最近的一个fat_cache的信息


2,FAT文件系统的注册

kernel中fat的初始化是在Namei_vfat.c文件中的init_vfat_fs()函数,该函数用于注册fat文件系统。

1075 static struct file_system_type vfat_fs_type = {
1076         .owner          = THIS_MODULE,
1077         .name           = "vfat",
1078         .mount          = vfat_mount,
1079         .kill_sb        = kill_block_super,
1080         .fs_flags       = FS_REQUIRES_DEV,
1081 };


3,vfat_mount()函数的流程

1,分配一个VFS层的super_block()结构体并对其各项成员进行赋值,super_block->s_fs_info指向fat文件系统本身的super_block msdos_sb_info结构体,对于fat文件系统,从设备读取第一个逻辑sector的内容,作必要的参数检查并提取必要的有用信息,如果文件系统boot_sector结构体里记录的sector大小比块设备的block大小还大的话,那么将文件系统sector的大小赋值给块设备block。


2,fat_inode=new_inode(sb)函数,调用该super_block的操作函数分配一个新的inode并将其加到全局链表里


3,分配一个root_inode结构体,然后调用fat_read_root(root_inode)函数对root_inode结构体相关成员赋值,比如会根据mount时候的uid gid选项对inode的uid和gid成员赋值,然后对inode操作函数进行赋值,最后调用d_make_root(root_inode)函数创建fat32文件系统的根目录,建立dentry和inode的联系。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值