Chinaunix
标题:
write 系统调用从上到下是怎么到bio的产生的?
[打印本页]
作者:
goingstudy
时间:
2014-09-21 11:38
标题:
write 系统调用从上到下是怎么到bio的产生的?
write()-> vfs -> fp_operation ->.... -> bio_alloc() ->generic_make_request -> IO scheduler
我就是想知道到具体到fp_operation后 ,再怎么产生bio,产生request的
可能有人会说在具体的驱动里,希望有经验的给说一下或给点代码提示
作者:
goingstudy
时间:
2014-09-21 12:14
还有就是bio结构一般是在哪个层面产生的?
看ULK上应该是在generic block layer,并且这一层应该产生request,但是有些如loop设备,处理的是bio,并不需要request,那么loop应该是在哪一层?
作者:
wait_rabbit
时间:
2014-09-21 20:37
本帖最后由 wait_rabbit 于 2014-09-21 20:39 编辑
一般就是把相应的 fd 挂在设备驱动的等待队列上,该等待队列是设备驱动提供,一旦驱动读写完毕,就会【唤 + 醒】等待该 fd 的用户进程。
fp_operation 中的 poll 函数是一个桥梁,负责将用户进程挂在驱动的等待队列上。
==========
靠,这也能遇到敏感词。括号中有啥敏感的地方??》
作者:
hmsghnh
时间:
2014-09-23 10:27
你有没有去找啊,很容易的啊
vfs_write -> file->f_op->write -> do_sync_write -> filp->f_op->aio_write -> ext4_file_write ->generic_file_aio_write
->generic_perform_write ->a_ops->write_begin ->ext4_write_begin ->__block_write_begin
先是写到page cache 层,合适的时候调用 submit_bh submit_bio 进行写操作
作者:
smalloc
时间:
2014-09-25 15:14
本帖最后由 smalloc 于 2014-09-25 15:15 编辑
...
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2