亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1176 | 回復(fù): 0
打印 上一主題 下一主題

libata reading notes - io operation part 3 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-01-13 21:32 |只看該作者 |倒序?yàn)g覽

                IO operation part 3: how libata connects to SCSI layer
scsi_request_fn -> scsi_dispatch_cmd -> queuecommand (ata_scsi_queuecmd)
-> __ata_scsi_queuecmd -> ata_scsi_translate -> ata_qc_issue
-> ahci_qc_prep ahci_qc_issue
scsi_request_fn
Each block device has a request_queue associated with it, the IO
requests from kernel block layer (bio, block layer will try to merge
bio according to the elevator algorithm, bios which request data in the
near area are merged into one struct request in request_queue) are
collected on this queue. Block driver needs to provide a request_fn
to handle the requests (for SCSI deivce, it is scsi_request_fn)
scsi_request_fn -> scsi_dispatch_cmd
scsi_host_template:queuecommand(scsi_cmnd, scsi_done)
Through this function call, the SCSI layer will call into lower level
driver (f.e ata_scsi_queuecmd to the libata layer).
scsi_done() will be called when the scsi_cmnd is finished by the lower
level driver, and through this function the lower level driver calls
back to the SCSI layer.
ata_scsi_queuecmd
Find the corresponding ata_port and ata_deivce and call
__ata_scsi_queuecmd to do the real work.
ata_scsi_queuecmd -> __ata_scsi_queuecmd
Find appropriate translate function used for translating scsi command
block to ata command (ata_taskfile) f.e ata_scsi_rw_xlat translates
SCSI r/w command into an ATA one. In libata layer, a command for an ATA
device is represented by a ata_qeueued_cmd.
ata_scsi_queuecmd -> __ata_scsi_queuecmd -> ata_scsi_translate
Find an empty command slot (ata_queued_cmd) in ata_port and init this
ata_queued_cmd from the scsi_cmnd, including memory buffer address used
for DMA
    qc->scsidone = scsi_done
    qc->complete_fn = ata_scsi_qc_complete
    When the ata command is finished, complete_fn will be called
        (which will call scsidone to call back to SCSI layer).
ata_qc_issue() -> ata_port_operations:qc_prep qc_issue
This will call into ATA host controller driver, f.e for ahci controller
driver to do command setup and command issue. For ahci driver, it needs
to setup the command table, including command FIS, dma address..
(see ahci_qc_prep ahci_qc_issue for details).
               
               
               
               
               

本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u3/100604/showart_2148208.html
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP