writepage函数的剖析过程

fs/mpage.c文件

文件:/mm/page-write.c
wakeup_bdflush调用pdflush_operation
文件:/mm/pdflush.c
pdflush_operation调用wake_up_process
文件: /kernel/sched.c
wake_up_process调用try_to_wake_up

真正调用do_writepages函数的地方有:
1)__filemap_fdatawrite_range
2)__sync_single_inode

在这里有一个小小的tips关于__sync_single_inode
请详细查看其中的英文注释:
 * Write a single inode's dirty pages and inode data out to disk.
 * If `wait' is set, wait on the writeout.
请注意看这里if wait is set,如果等待writeout返回,就必须设置wait
参数,这个参数恐怕与sync有关吧!!
 *
 * The whole writeout design is quite complex and fragile.  We want to avoid
 * starvation of particular inodes when others are being redirtied, prevent
 * livelocks, etc.
 *
 * Called under inode_lock.

 


do_writepages调用writepages

writepages的读写方式有如下几种:
1)ramdisk_writepages
2)  generic_writepages
3)  ext2_writepages
4)hfs_writepages
5)  hfsplus_writepages
6) jfs_writepages
7) nfs_writepages
在这里想说明一点情况,调用writepages的情况下,是否会等待返回

这个时候是阻塞的情况,还是异步读写。

generic_writepges调用mpage_writepages函数


在这里我有两点问题:
1)如何调试内核输出,文件系统读写的调试
2)真正调用writepages的时机

你可能感兴趣的:(writepage,剖析I过程)