linux ext2 get block,linux内核源码总览之0000--------备分,未整理,虚拟文件系统3

特定的文件系统,比如ext2:

Fs/ext2目录中的文件说明

如下面可以看到,几个重要的操作表结构file_operation,super_operation,inode_operation,dentry_operation,address_space_operations(文档“一.首要说明”)在ext2文件系统中的位置如下:

1.file_operation的赋值在file.c中

2. super_operation的赋值在super.c中

3.address_space_operations在inode.c中

4. inode_operation比较特殊:普通文件的索引节点操作方法在file.c中;

目录文件的索引节点方法在namei.c中

注意:inode_operation不在inode.c中

5. dentry_operation:ext2中没有相关操作,不知道为啥,只有部分文件系统

有相关函数操作。

我的猜测是,在ext2中,把目录当作文件了,所以…

虚拟文件系统不像具体文件系统,那里文件是真实的对应,比如super.c就对应着超级块操作,inode就对应着索引节点,namei.c就对应着目录项.。

虚拟文件系统中的函数会封装特定文件系统的函数,比如虚拟文件系统中的文件操作函数sys_open(open.c中),该函数里最终会调用真实文件系统的open函数。又比如

sys_mkdir(namei.c中)调用vfs_mkdir,最终会调用真实文件系统中的mkdir函数

一.file.c

0818b9ca8b590ca3270a3433284dd417.png

File.c只是起到了一个过渡作用,其上面的那些函数都是来自于其他文件,比如ext2_truncate函数来自于inode.c,generic_file_read来自于filemmap.c(mm目录)等等

二.Super.c

(1)

0818b9ca8b590ca3270a3433284dd417.png

(2)文件系统重要函数get_sb

0818b9ca8b590ca3270a3433284dd417.png

(3) ext2_sync_super函数,sync_super函数见深入linux内核P625页

super.c只是起到了一个过渡作用,其上面的那些函数都是来自于其他文件,

三.Inode.c

(1)

0818b9ca8b590ca3270a3433284dd417.png

(2)

该文件里还有重要函数ext2_get_block下面的一系列函数:

0818b9ca8b590ca3270a3433284dd417.png

(3)

释放数据块:ext2_truncate函数(深入linux内核P757),该函数却在file.c中被赋值,如下图:

0818b9ca8b590ca3270a3433284dd417.png

三.Namei.c

0818b9ca8b590ca3270a3433284dd417.png

五.其它

fsync.c

只有一个函数ext2_sync_file(ext2的fsync实现, fsync函数见深入linx内核P625页)

0818b9ca8b590ca3270a3433284dd417.png

Xattr相关:增强属性与访问控制列表(深入linuxP738)

几个重要数据结构

1.

ext2_inode_info数据结构在Ext2.h

ext2_sb_info数据结构在 include/linux/ext2_fs_sb.h

内存数据结构ext2_group_desc呢?与磁盘数据结构重名了,懒得走了

2.

ext2_group_desc,ext2_super_block  ,ext2_inode, ext2_dir_entry_2 这几个磁盘数据结构在 include/linux/ext2_fs.h中

(深入linu内核P741页)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值