Skip to content

feat(axvirtio-blk): add virtio-mmio block device core - #1935

Draft
luodeb wants to merge 6 commits into
rcore-os:devfrom
doubao-coding:debin/virtio-blk-feature
Draft

feat(axvirtio-blk): add virtio-mmio block device core#1935
luodeb wants to merge 6 commits into
rcore-os:devfrom
doubao-coding:debin/virtio-blk-feature

Conversation

@luodeb

@luodeb luodeb commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

依赖关系

问题

#1927 为 AxVisor 引入了可复用的 VirtIO MMIO/virtqueue 公共层,但其中原先附带的 block device crate 没有真实消费者,因此已从网络功能 PR 中移除。block 功能需要作为独立变更维护和审查,避免扩大 #1927 的功能边界。

修改

  • 新增 axvirtio-blk no_std crate。
  • 基于 axvirtio-common 实现 VirtIO MMIO block transport、设备配置空间和单队列请求处理。
  • 支持读、写、flush 及 VirtIO block 状态返回。
  • 提供 BlockBackend capability boundary,使存储实现与 VirtIO 协议核心解耦。
  • 提供统一 emulated-device adapter 及 MMIO/IRQ 资源声明。
  • 增加后端、guest memory、配置空间、MMIO、请求队列和设备初始化测试。
  • 将 crate 加入 workspace dependency,并更新 Cargo.lock

实现逻辑

VirtIO transport 与 split virtqueue 复用 #1927 提供的 axvirtio-commonaxvirtio-blk 只负责 block 配置和请求语义,实际存储通过 BlockBackend 注入;guest descriptor 经 VirtIO queue 解析后转换为读、写或 flush 操作,完成后更新 used ring、状态字节和中断状态。

后续完善

Draft 阶段还会补齐 AxVisor 的生产 consumer、配置驱动设备注册、guest FDT 节点和独立 QEMU block I/O 回归。完成这些运行时证据且 #1927 合入后,再将本 PR 标记为 Ready for review。

验证

cargo test -p axvirtio-blk
cargo xtask clippy --package axvirtio-blk
cargo fmt --all --check
git diff --check

当前结果:33 个集成测试和 1 个 doctest 通过,targeted clippy 通过。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant