浅尝辄止72-FAT32-内核11

2019-01-27  本文已影响0人  阿棍儿_Leon

文件系统写入磁盘的实锤

文件系统的载体是一些代码,这些代码向上对接虚拟文件系统,向下对接block I/O层,对于文件系统来说,向block I/O层发送的请求就是写入磁盘的实锤,这个请求函数就是submit_bio,在分析文件系统问题时,如果传入这个函数的东西是正确的,问题就得向下找了。

写回的实锤

浅尝辄止71-后备设备中有提到,bdi_writeback_workfn会定时被调用来执行写回,现在就具体看看它的实锤。
bdi_writeback_workfn
==>wb_do_writeback
==>wb_writeback[kernel/fs/fs-writeback.c]
==>writeback_sb_inodes
==>__writeback_single_inode
==>do_writepages[kernel/mm/page-writeback.c]
==>mapping->a_ops->writepages
现在出现了一个函数指针,不难猜,指针指向的函数肯定在kernel/fs/fat目录下某处定义了。在kernel/fs/fat/inode.c可以找到这么一句

    .writepages = fat_writepages,

我们可以继续走下去
mapping->a_ops->writepages
==>fat_writepages[kernel/fs/fat/inode.c]
==>mpage_writepages[kernel/fs/mpage.c]
==>mpage_bio_submit
==>submit_bio[kernel/block/blk-core.c]

一般套路

至此可以大致看出文件系统的一些套路了

把它们定义好之后,kernel/fs/fat目录以外的那些不区分文件系统的代码就会自动在合适的时候调用它们。

上一篇 下一篇

猜你喜欢

热点阅读