⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vfs

📁 linux内核学习笔记 希望想看的人可以很快下载到
💻
字号:
any problems, send mails to sindybear@163.com


相关文件
	/fs/inode.c
	/fs/buffer.c
	/fs/super.c


*****************************super_block的一些有用的数据结构****************************
LIST_HEAD(super_blocks);	/fs/super.c
在linux系统中,所有的文件系统的super_block结构都联接成一个双向链表,他们的头指针就是super_blocks
也就是说,遍历这个结构就可以得到所有文件系统的信息。
所有的文件系统的super_block都是在mount的时候链如这个队列的,顺序如下
sys_mount-->do_mount-->do_add_mount-->do_kern_mount-->get_sb_bdev-->insert_super
****************************************************************************************



**********************super_block处理函数集*********************************************
在文件系统中,每一个super_block的函数处理集中都有下列的函数
static struct super_operations bfs_sops = {
	read_inode:	bfs_read_inode,
	write_inode:	bfs_write_inode,
	delete_inode:	bfs_delete_inode,
	put_super:	bfs_put_super,
	write_super:	bfs_write_super,
	statfs:		bfs_statfs,
};

其中,write_inode的处理过程需要好好考察一番,实际上的顺序是这样的
kupdate--->sync_old_buffers--->sync_unlocked_inodes--->sync_list--->__sync_one--->write_inode--->inode->i_sb->s_op->write_inode(inode, sync);
真的是辛苦的不得了。
首先,系统每隔一段时间就会调用kupdate将dirty的buffer_head刷新到磁盘上,
kupdate会调用sync_old_buffers来将所有的dirty的buffer_head刷新到磁盘上
sync_old_buffers则会首先调用sync_unlocked_inodes将一些inode刷新到磁盘上
……
经过一些步骤之后,就会调用各个文件系统的inode->write_inode来进行相应的处理
*********************************************************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -