qemu virtio-blk奇怪的限制

时间:2018-08-27 10:39:01

标签: kernel qemu

我正在尝试使用virtio磁盘编写针对qemu的准操作系统。

首先,我要做的就是从原始磁盘读取一个扇区。我设置了一个virtq,其中一个条目执行从磁盘读取的操作,将其列出来,并戳了通知插槽,但是它说“ virtio-blk缺少标题”。在源代码中查找,结果意味着没有写描述符或没有读描述符。好吧,我只想要一个读取(即设备写入)描述符,但我很不情愿地编写了另一个描述符,但是除非我将它们链接在一起,否则它还是被禁止使用,这在源代码中也可以看到。此时,我将写入的大小设置为零,但随后明确地将其写为零。

我真的不想对磁盘进行写操作,也不知道为什么这样做会扭曲我的手臂。有人知道如何要求qemu的virtio-blk真的,老实地读吗?

1 个答案:

答案 0 :(得分:0)

我知道了。标头必须是设备可读的,数据要到达的地方必须是设备可写的,并且状态字节需要是设备可写的。这就是为什么每个必须至少有一个,以及为什么它们必须按该顺序排列的原因。明智的编码表明,中间的位是第三个描述符,因此它可以同时用于磁盘读取和磁盘写入情况。