out_dec_host_busy: scsi_dec_host_busy(shost, cmd); ... } scsi_dispatch_cmd失败,返回BLK_STS_RESOURCE的场景: 1、req重新添加到list中 2、scsi通过scsi_commit_rqs重新提交硬件队列,处理List(如果scsi host没有提供commit_rqs则没有此步。目前看仅virtio scsi有) 3、blk_mq_delay_run_hw_queue异步调...
传统的SCSI 适配卡连接单个总线,相应的只具有一个总线号。 在引入存储网络之后,每个光纤通道HBA(Host Bus Adapter)或iSCSI(Internet SCSI)网卡也都连接一条总线,分配一个总线号,在他们之间依靠不同的总线号加以区分。 目标设备标识在一条总线菊花链上的单个设备,逻辑单元号则表示一个目标设备中的一个子设备。 通常...
传统的SCSI 适配卡连接单个总线,相应的只具有一个总线号。 在引入存储网络之后,每个光纤通道HBA(Host Bus Adapter)或iSCSI(Internet SCSI)网卡也都连接一条总线,分配一个总线号,在他们之间依靠不同的总线号加以区分。 目标设备标识在一条总线菊花链上的单个设备,逻辑单元号则表示一个目标设备中的一个子设备。 通常...
5.4 block层下发IO到scsi层,scsi 设备或者host处于busy状态,IO重新入队列 scsi_request_fn() -> case note_ready: // 设备busy或者Host busy -> blk_requeue_request() 5.5 scsi多处调用 scsi_finish_command, 检查驱动返回的result不为0,IO重新入队列 scsi_finish_command() -> scsi_io_completion() ->...
传统的SCSI 适配卡连接单个总线,相应的只具有一个总线号。 在引入存储网络之后,每个光纤通道HBA(Host Bus Adapter)或iSCSI(Internet SCSI)网卡也都连接一条总线,分配一个总线号,在他们之间依靠不同的总线号加以区分。 目标设备标识在一条总线菊花链上的单个设备,逻辑单元号则表示一个目标设备中的一个子设备。 通常...
Solaris DDI/DKI 将 SCSI 设备的软件接口分成以下两个主要部分:目标驱动程序和主机总线适配器 (host bus adapter, HBA)驱动程序。目标驱动程序指 SCSI 总线上的设备(如磁盘或磁带机)的驱动程序。主机总线适配器驱动程序指主机上的 SCSI 控制器的驱动程序。SCSA 定义了这两个组件之间的接口。本章仅讨论目标驱动程序...
573 spin_unlock_irqrestore(host->host_lock, flags); 574 if (rtn) { 575 if (scsi_delete_timer(cmd)) { 576 atomic_inc(&cmd->device->iodone_cnt); 577 scsi_queue_insert(cmd, 578 (rtn == SCSI_MLQUEUE_DEVICE_BUSY) ? 579 rtn : SCSI_MLQUEUE_HOST_BUSY); ...
存储设备通过主机总线适配器(HBA:Host Bus Adapter)或者通过在板上的控制器连接到服务器。 在控制器和外围设备之间的通信连接叫作I/O总线。当前用户I/O 总线的最重要的技术是SCSI 和光纤通道。 SCSI 定义了一种总线,该总线能够连接16个设备(包括服务器和存储设备)。 在另一方面,光纤通道定义存储网络的不同拓扑...
存储设备通过主机总线适配器(HBA:Host Bus Adapter)或者通过在板上的控制器连接到服务器。 在控制器和外围设备之间的通信连接叫作I/O总线。当前用户I/O 总线的最重要的技术是SCSI 和光纤通道。 SCSI 定义了一种总线,该总线能够连接16个设备(包括服务器和存储设备)。 在另一方面,光纤通道定义存储网络的不同拓扑...
通过在 I/O 路径中的 sdev->device_busy 跟踪队列深度,观察到 IOPS 受到很大影响,从.get_budget 回调中返回预算令牌。 预算令牌可以传递给驱动程序,这样我们就可以用 sbitmap_queue 替换原子变量,并以这种方式缓解缩放问题,链接:https://lore.kernel.org/r/20210122023317.687987-9-ming.lei@redhat.comret=BLK...