VHOST SCSI数据流如下所示:
IO下发过程
虚拟机中应用态程序下发IO,依次经过VFS/文件系统层,BLOCK层,SCSI层,经VIRTIO SCSI驱动virtscsi_commit_rqs访问寄存器通知HOST内核中VHOST设备(VHOST KICK过程),数据已经下发。HOST内核通过vhost_scsi_handle_kick将SCSI命令下发,这里是将IO发给target core,target core会将IO请求经过SCSI层将IO发送给硬件。
IO完成过程
硬件处理后的IO完成信息经过SCSI层,target core,经vhost worker进行IO完成信息传递,HOST内核需要通知虚拟机IO完成信息准备,通过注入中断给虚拟机(VHOST CALL过程),虚拟机收到中断后,将IO完成信息依次经过SCSI层,BLOCK层,VFS/文件系统,最终完成IO。