Skip to content

RFC vhost-nvme: new qemu nvme backend using nvme target

Ming Lin linux-nvme qemu-devel virtualization 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest9 patches 3 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/9nvme-vhost: add initial commitdrivers/nvme/target/Kconfig drivers/nvme/target/Makefile drivers/nvme/target/vhost.c+29 -00 replies
2/9nvme-vhost: add basic ioctl handlersdrivers/nvme/target/core.c drivers/nvme/target/vhost.c include/uapi/linux/vhost.h+279 -10 replies
3/9nvme-vhost: add basic nvme bar read/writedrivers/nvme/target/vhost.c include/uapi/linux/vhost.h+116 -30 replies
4/9nvmet: add a controller "start" hookdrivers/nvme/target/core.c drivers/nvme/target/nvmet.h+6 -02 replies
4/9nvmet: add a controller "start" hook+0 -00 replies
5/9nvme-vhost: add controller "start" callbackdrivers/nvme/target/vhost.c+106 -00 replies
6/9nvmet: add a "parse_extra_admin_cmd" hookdrivers/nvme/target/admin-cmd.c drivers/nvme/target/nvmet.h+10 -00 replies
7/9nvme-vhost: add "parse_extra_admin_cmd" callbackdrivers/nvme/target/vhost.c+153 -00 replies
8/9nvme-vhost: add vhost memory helpersdrivers/nvme/target/vhost.c+108 -00 replies
9/9nvme-vhost: add nvme queue handlersdrivers/nvme/target/vhost.c+416 -40 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [RFC PATCH 0/9] vhost-nvme: new qemu nvme backend using nvme target

Hi,

This is the first attempt to add a new qemu nvme backend using in-kernel nvme target.

Most code are ported from qemu-nvme and also borrow code from Hannes Reinecke's rts-megasas.

It's similar as vhost-scsi, but doesn't use virtio. The advantage is guest can run unmodified NVMe driver. So guest can be any OS that has a NVMe driver.

The goal is to get as good performance as vhost-scsi. But for now, peformance is poor.

MMIO is the bottleneck.

One improvment could be to use google's NVMe vendor extension that I send in another thread, aslo here:
https://git.kernel.org/cgit/linux/kernel/git/mlin/linux.git/log/?h=nvme-google-ext

Qemu side:
http://www.minggr.net/cgit/cgit.cgi/qemu/log/?h=vhost-nvme.0
Kernel side also here:
https://git.kernel.org/cgit/linux/kernel/git/mlin/linux.git/log/?h=vhost-nvme.0

Thanks for any comment,
Ming