我知道Linux /O栈中的块I/O层管理和调度I/O请求。但我不知道这段代码在哪里。实际上,我希望看到内核中对应于这一层的代码部分。
发布于 2015-12-16 10:28:58
IO的调度是从调用blk_finish_plug函数开始的,它本身将调用IO调度程序的elevator_add_req_fn方法。
这是一个调用此函数以添加新IOs的写回处理的示例:
#0 deadline_add_request at block/deadline-iosched.c:102
#1 __elv_add_request at block/elevator.c:717
#2 blk_flush_plug_list at block/blk-core.c:2746
#3 blk_finish_plug at block/blk-core.c:2762
#4 generic_writepages at mm/page-writeback.c:1052
#5 do_writepages at mm/page-writeback.c:1065
#6 writeback_single_inode at fs/fs-writeback.c:388
#7 writeback_sb_inodes at fs/fs-writeback.c:549
#8 writeback_inodes_wb at fs/fs-writeback.c:592
#9 wb_writeback at fs/fs-writeback.c:724
#10 wb_check_background at fs/fs-writeback.c:804
#11 wb_do_writeback at fs/fs-writeback.c:879
#12 bdi_writeback_thread at fs/fs-writeback.c:913
#13 kthread at kernel/kthread.c:96您可以查看堆栈跟踪中提到的文件,特别是blk-core.c文件的blk_finish_plug方法。您可以在https://lwn.net/Articles/438256/上找到更多关于插入工作方式的详细信息。
https://unix.stackexchange.com/questions/249680
复制相似问题