generic block layer io request processing
来源:互联网 发布:淘宝返利群怎么赚钱 编辑:程序博客网 时间:2024/05/17 03:31
一般的基本request queue和io scheduler的bio请求处理
standard request handling
1.
generic_make_request -> make_request_fn (blk_queue_io calls io_scheduler to merge/append the request into the associated request queue)
2.
dirver unplug -> q->request_fn (driver registered while initing the queue) -> blk_fetch_request (return a request from queue and start a timer for it) -> driver starts io
unplug from scheduler
1.
schedule -> sched_submit_work -> blk_schedule_flush_plug -> blk_flush_plug_list -> queue_unplugged -> blk_run_queue_async -> mod_delayed_work(kblockd_workqueue, &q->delay_work, 0)
2.
kblockd_workqueue scheduled -> blk_delay_work (q->delay_work) -> __blk_run_queue -> __blk_run_queue_uncond -> q->request_fn (driver registered)
job done & wake up request task
1.
driver dma done & irq arrived -> queue_work(driver_wq, <request_done>)
2.
driver_wq scheduled -> __blk_end_request -> __blk_end_bidi_request -> blk_finish_request -> __blk_put_request -> freed_request -> wake_up(&rl->wait[sync])
standard request handling
1.
generic_make_request -> make_request_fn (blk_queue_io calls io_scheduler to merge/append the request into the associated request queue)
2.
dirver unplug -> q->request_fn (driver registered while initing the queue) -> blk_fetch_request (return a request from queue and start a timer for it) -> driver starts io
unplug from scheduler
1.
schedule -> sched_submit_work -> blk_schedule_flush_plug -> blk_flush_plug_list -> queue_unplugged -> blk_run_queue_async -> mod_delayed_work(kblockd_workqueue, &q->delay_work, 0)
2.
kblockd_workqueue scheduled -> blk_delay_work (q->delay_work) -> __blk_run_queue -> __blk_run_queue_uncond -> q->request_fn (driver registered)
job done & wake up request task
1.
driver dma done & irq arrived -> queue_work(driver_wq, <request_done>)
2.
driver_wq scheduled -> __blk_end_request -> __blk_end_bidi_request -> blk_finish_request -> __blk_put_request -> freed_request -> wake_up(&rl->wait[sync])
0 0
- generic block layer io request processing
- request processing lifecycle
- Cache Layer Block Types
- Cache Layer Block Types
- RA layer request failed
- RA layer request failed
- RA layer request failed
- RA layer request failed
- RA layer request failed
- RA layer request failed
- Django Request Response processing(Apache)
- HTTP Request Processing in IIS
- Block-layer I/O polling
- svn : RA layer request failed
- RA layer request failed SVN
- Documentation\block\request
- firewall block http request
- request processing lifecycle phase1 restore view
- Redux 入门教程(一):基本用法
- 创建SVN仓库的步骤
- hash表建立,查找,详解
- Java线程Thread.join方法解析
- hive mapjoin操作
- generic block layer io request processing
- 设计模式之代理模式简介
- tomcat远程调试配置
- .net SQLite批量写入数据性能问题
- 决策树与随机森林
- HLSL shader编程中顶点着色器与像素着色器函数中的参数传递解析
- windows下安装黑苹果U盘
- version code and version name
- 过滤器filter使用之案例二