From: mlin@kernel.org (Ming Lin)
Subject: [RFC PATCH 0/2] virtio nvme
Date: Fri, 18 Sep 2015 11:12:37 -0700 [thread overview]
Message-ID: <1442599957.11660.8.camel@ssi> (raw)
In-Reply-To: <1442537752.11959.35.camel@haakon3.risingtidesystems.com>
On Thu, 2015-09-17@17:55 -0700, Nicholas A. Bellinger wrote:
> On Thu, 2015-09-17@16:31 -0700, Ming Lin wrote:
> > On Wed, 2015-09-16@23:10 -0700, Nicholas A. Bellinger wrote:
> > > Hi Ming & Co,
> > >
> > > On Thu, 2015-09-10@10:28 -0700, Ming Lin wrote:
> > > > On Thu, 2015-09-10@15:38 +0100, Stefan Hajnoczi wrote:
> > > > > On Thu, Sep 10, 2015@6:48 AM, Ming Lin <mlin@kernel.org> wrote:
> > > > > > These 2 patches added virtio-nvme to kernel and qemu,
> > > > > > basically modified from virtio-blk and nvme code.
> > > > > >
> > > > > > As title said, request for your comments.
> > >
> > > <SNIP>
> > >
> > > > >
> > > > > At first glance it seems like the virtio_nvme guest driver is just
> > > > > another block driver like virtio_blk, so I'm not clear why a
> > > > > virtio-nvme device makes sense.
> > > >
> > > > I think the future "LIO NVMe target" only speaks NVMe protocol.
> > > >
> > > > Nick(CCed), could you correct me if I'm wrong?
> > > >
> > > > For SCSI stack, we have:
> > > > virtio-scsi(guest)
> > > > tcm_vhost(or vhost_scsi, host)
> > > > LIO-scsi-target
> > > >
> > > > For NVMe stack, we'll have similar components:
> > > > virtio-nvme(guest)
> > > > vhost_nvme(host)
> > > > LIO-NVMe-target
> > > >
> > >
> > > I think it's more interesting to consider a 'vhost style' driver that
> > > can be used with unmodified nvme host OS drivers.
> > >
> > > Dr. Hannes (CC'ed) had done something like this for megasas a few years
> > > back using specialized QEMU emulation + eventfd based LIO fabric driver,
> > > and got it working with Linux + MSFT guests.
> > >
> > > Doing something similar for nvme would (potentially) be on par with
> > > current virtio-scsi+vhost-scsi small-block performance for scsi-mq
> > > guests, without the extra burden of a new command set specific virtio
> > > driver.
> >
> > Trying to understand it.
> > Is it like below?
> >
> > .------------------------. MMIO .---------------------------------------.
> > | Guest |--------> | Qemu |
> > | Unmodified NVMe driver |<-------- | NVMe device simulation(eventfd based) |
> > '------------------------' '---------------------------------------'
> > | ^
> > write NVMe | | notify command
> > command | | completion
> > to eventfd | | to eventfd
> > v |
> > .--------------------------------------.
> > | Host: |
> > | eventfd based LIO NVMe fabric driver |
> > '--------------------------------------'
> > |
> > | nvme_queue_rq()
> > v
> > .--------------------------------------.
> > | NVMe driver |
> > '--------------------------------------'
> > |
> > |
> > v
> > .-------------------------------------.
> > | NVMe device |
> > '-------------------------------------'
> >
>
> Correct. The LIO driver on KVM host would be handling some amount of
> NVMe host interface emulation in kernel code, and would be able to
> decode nvme Read/Write/Flush operations and translate -> submit to
> existing backend drivers.
Let me call the "eventfd based LIO NVMe fabric driver" as
"tcm_eventfd_nvme"
Currently, LIO frontend driver(iscsi, fc, vhost-scsi etc) talk to LIO
backend driver(fileio, iblock etc) with SCSI commands.
Did you mean the "tcm_eventfd_nvme" driver need to translate NVMe
commands to SCSI commands and then submit to backend driver?
But I thought the future "LIO NVMe target" can support frontend driver
talk to backend driver directly with NVMe commands without translation.
Am I wrong?
>
> As with the nvme-over-fabric case, it would be possible to do a mapping
> between backend driver queue resources for real NVMe hardware (eg:
> target_core_nvme), but since it would still be doing close to the same
> amount of software emulation for both backend driver cases, I wouldn't
> expect there to be much performance advantage over just using normal
> submit_bio().
>
> --nab
>
next prev parent reply other threads:[~2015-09-18 18:12 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-10 5:48 [RFC PATCH 0/2] virtio nvme Ming Lin
2015-09-10 5:48 ` Ming Lin
2015-09-10 5:48 ` [RFC PATCH 1/2] virtio_nvme(kernel): virtual NVMe driver using virtio Ming Lin
2015-09-10 5:48 ` Ming Lin
2015-09-10 5:48 ` [RFC PATCH 2/2] virtio-nvme(qemu): NVMe device " Ming Lin
2015-09-10 5:48 ` Ming Lin
2015-09-10 14:02 ` [RFC PATCH 0/2] virtio nvme Keith Busch
2015-09-10 14:02 ` Keith Busch
2015-09-10 17:02 ` Ming Lin
2015-09-10 17:02 ` Ming Lin
2015-09-11 4:55 ` Ming Lin
2015-09-11 4:55 ` Ming Lin
2015-09-11 17:46 ` J Freyensee
2015-09-11 17:46 ` J Freyensee
2015-09-10 14:38 ` Stefan Hajnoczi
2015-09-10 14:38 ` Stefan Hajnoczi
2015-09-10 17:28 ` Ming Lin
2015-09-10 17:28 ` Ming Lin
2015-09-11 7:48 ` Stefan Hajnoczi
2015-09-11 7:48 ` Stefan Hajnoczi
2015-09-11 17:21 ` Ming Lin
2015-09-11 17:21 ` Ming Lin
2015-09-11 17:53 ` Stefan Hajnoczi
2015-09-11 17:53 ` Stefan Hajnoczi
2015-09-11 18:54 ` Ming Lin
2015-09-11 18:54 ` Ming Lin
2015-09-17 6:10 ` Nicholas A. Bellinger
2015-09-17 6:10 ` Nicholas A. Bellinger
2015-09-17 18:18 ` Ming Lin
2015-09-17 18:18 ` Ming Lin
2015-09-17 21:43 ` Nicholas A. Bellinger
2015-09-17 21:43 ` Nicholas A. Bellinger
2015-09-17 23:31 ` Ming Lin
2015-09-18 0:55 ` Nicholas A. Bellinger
2015-09-18 0:55 ` Nicholas A. Bellinger
2015-09-18 18:12 ` Ming Lin
2015-09-18 18:12 ` Ming Lin [this message]
2015-09-18 21:09 ` Nicholas A. Bellinger
2015-09-18 21:09 ` Nicholas A. Bellinger
2015-09-18 23:05 ` Ming Lin
2015-09-18 23:05 ` Ming Lin
2015-09-23 22:58 ` Ming Lin
2015-09-23 22:58 ` Ming Lin
2015-09-27 5:01 ` Nicholas A. Bellinger
2015-09-27 5:01 ` Nicholas A. Bellinger
2015-09-27 6:49 ` Ming Lin
2015-09-27 6:49 ` Ming Lin
2015-09-28 5:58 ` Hannes Reinecke
2015-09-28 5:58 ` Hannes Reinecke
2015-09-17 23:31 ` Ming Lin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1442599957.11660.8.camel@ssi \
--to=mlin@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.