All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: Christoph Hellwig <hch@infradead.org>
Cc: Stefan Hajnoczi <stefanha@gmail.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Christoph Hellwig <chellwig@redhat.com>,
	Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>,
	kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Linux Virtualization <virtualization@lists.linux-foundation.org>,
	"Nicholas A. Bellinger" <nab@linux-iscsi.org>
Subject: Re: virtio scsi host draft specification, v3
Date: Wed, 29 Jun 2011 12:23:38 +0200	[thread overview]
Message-ID: <4E0AFD2A.80102@suse.de> (raw)
In-Reply-To: <20110629100752.GA27744@infradead.org>

On 06/29/2011 12:07 PM, Christoph Hellwig wrote:
> On Wed, Jun 29, 2011 at 10:39:42AM +0100, Stefan Hajnoczi wrote:
>> I think we're missing a level of addressing.  We need the ability to
>> talk to multiple target ports in order for "list target ports" to make
>> sense.  Right now there is one implicit target that handles all
>> commands.  That means there is one fixed I_T Nexus.
>>
>> If we introduce "list target ports" we also need a way to say "This
>> CDB is destined for target port #0".  Then it is possible to enumerate
>> target ports and address targets independently of the LUN field in the
>> CDB.
>>
>> I'm pretty sure this is also how SAS and other transports work.  In
>> their framing they include the target port.
>
> Yes, exactly.  Hierachial LUNs are a nasty fringe feature that we should
> avoid as much as possible, that is for everything but IBM vSCSI which is
> braindead enough to force them.
>
Yep.

>> The question is whether we really need to support multiple targets on
>> a virtio-scsi adapter or not.  If you are selectively mapping LUNs
>> that the guest may access, then multiple targets are not necessary.
>> If we want to do pass-through of the entire SCSI bus then we need
>> multiple targets but I'm not sure if there are other challenges like
>> dependencies on the transport (Fibre Channel, SAS, etc) which make it
>> impossible to pass through bus-level access?
>
> I don't think bus-level pass through is either easily possible nor
> desirable.  What multiple targets are useful for is allowing more
> virtual disks than we have virtual PCI slots.  We could do this by
> supporting multiple LUNs, but given that many SCSI ressources are
> target-based doing multiple targets most likely is the more scabale
> and more logical variant.  E.g. we could much more easily have one
> virtqueue per target than per LUN.
>
The general idea here is that we can support NPIV.
With NPIV we'll have several scsi_hosts, each of which is assigned a 
different set of LUNs by the array.
With virtio we need to able to react on LUN remapping on the array 
side, ie we need to be able to issue a 'REPORT LUNS' command and 
add/remove LUNs on the fly. This means we have to expose the 
scsi_host in some way via virtio.

This is impossible with a one-to-one mapping between targets and 
LUNs. The actual bus-level pass-through will be just on the SCSI 
layer, ie 'REPORT LUNS' should be possible. If and how we do a LUN 
remapping internally on the host is a totally different matter.
Same goes for the transport details; I doubt we will expose all the 
dingy details of the various transports, but rather restrict 
ourselves to an abstract transport.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		      zSeries & Storage
hare@suse.de			      +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)

WARNING: multiple messages have this Message-ID (diff)
From: Hannes Reinecke <hare@suse.de>
To: Christoph Hellwig <hch@infradead.org>
Cc: Christoph Hellwig <chellwig@redhat.com>,
	Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>,
	kvm@vger.kernel.org, "Michael S. Tsirkin" <mst@redhat.com>,
	Stefan Hajnoczi <stefanha@gmail.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	"Nicholas A. Bellinger" <nab@linux-iscsi.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Linux Virtualization <virtualization@lists.linux-foundation.org>
Subject: Re: [Qemu-devel] virtio scsi host draft specification, v3
Date: Wed, 29 Jun 2011 12:23:38 +0200	[thread overview]
Message-ID: <4E0AFD2A.80102@suse.de> (raw)
In-Reply-To: <20110629100752.GA27744@infradead.org>

On 06/29/2011 12:07 PM, Christoph Hellwig wrote:
> On Wed, Jun 29, 2011 at 10:39:42AM +0100, Stefan Hajnoczi wrote:
>> I think we're missing a level of addressing.  We need the ability to
>> talk to multiple target ports in order for "list target ports" to make
>> sense.  Right now there is one implicit target that handles all
>> commands.  That means there is one fixed I_T Nexus.
>>
>> If we introduce "list target ports" we also need a way to say "This
>> CDB is destined for target port #0".  Then it is possible to enumerate
>> target ports and address targets independently of the LUN field in the
>> CDB.
>>
>> I'm pretty sure this is also how SAS and other transports work.  In
>> their framing they include the target port.
>
> Yes, exactly.  Hierachial LUNs are a nasty fringe feature that we should
> avoid as much as possible, that is for everything but IBM vSCSI which is
> braindead enough to force them.
>
Yep.

>> The question is whether we really need to support multiple targets on
>> a virtio-scsi adapter or not.  If you are selectively mapping LUNs
>> that the guest may access, then multiple targets are not necessary.
>> If we want to do pass-through of the entire SCSI bus then we need
>> multiple targets but I'm not sure if there are other challenges like
>> dependencies on the transport (Fibre Channel, SAS, etc) which make it
>> impossible to pass through bus-level access?
>
> I don't think bus-level pass through is either easily possible nor
> desirable.  What multiple targets are useful for is allowing more
> virtual disks than we have virtual PCI slots.  We could do this by
> supporting multiple LUNs, but given that many SCSI ressources are
> target-based doing multiple targets most likely is the more scabale
> and more logical variant.  E.g. we could much more easily have one
> virtqueue per target than per LUN.
>
The general idea here is that we can support NPIV.
With NPIV we'll have several scsi_hosts, each of which is assigned a 
different set of LUNs by the array.
With virtio we need to able to react on LUN remapping on the array 
side, ie we need to be able to issue a 'REPORT LUNS' command and 
add/remove LUNs on the fly. This means we have to expose the 
scsi_host in some way via virtio.

This is impossible with a one-to-one mapping between targets and 
LUNs. The actual bus-level pass-through will be just on the SCSI 
layer, ie 'REPORT LUNS' should be possible. If and how we do a LUN 
remapping internally on the host is a totally different matter.
Same goes for the transport details; I doubt we will expose all the 
dingy details of the various transports, but rather restrict 
ourselves to an abstract transport.

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		      zSeries & Storage
hare@suse.de			      +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)

  parent reply	other threads:[~2011-06-29 10:23 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-07 13:43 virtio scsi host draft specification, v3 Paolo Bonzini
2011-06-07 13:43 ` [Qemu-devel] " Paolo Bonzini
2011-06-08 23:28 ` Rusty Russell
2011-06-08 23:28 ` Rusty Russell
2011-06-08 23:28   ` [Qemu-devel] " Rusty Russell
2011-06-08 23:28   ` Rusty Russell
2011-06-09  6:59   ` Paolo Bonzini
2011-06-09  6:59     ` [Qemu-devel] " Paolo Bonzini
2011-06-10 11:33     ` Rusty Russell
2011-06-10 11:33     ` Rusty Russell
2011-06-10 11:33       ` [Qemu-devel] " Rusty Russell
2011-06-10 12:14       ` Stefan Hajnoczi
2011-06-10 12:14       ` Stefan Hajnoczi
2011-06-10 12:14         ` [Qemu-devel] " Stefan Hajnoczi
2011-06-10 12:22         ` Paolo Bonzini
2011-06-10 12:22         ` Paolo Bonzini
2011-06-10 12:22           ` [Qemu-devel] " Paolo Bonzini
2011-06-09  6:59   ` Paolo Bonzini
2011-06-10 12:55 ` Hannes Reinecke
2011-06-10 12:55   ` [Qemu-devel] " Hannes Reinecke
2011-06-10 14:35   ` Paolo Bonzini
2011-06-10 14:35   ` Paolo Bonzini
2011-06-10 14:35     ` [Qemu-devel] " Paolo Bonzini
2011-06-14  8:39     ` Hannes Reinecke
2011-06-14  8:39       ` [Qemu-devel] " Hannes Reinecke
2011-06-14 15:53       ` Stefan Hajnoczi
2011-06-14 15:53       ` Stefan Hajnoczi
2011-06-14 15:53         ` [Qemu-devel] " Stefan Hajnoczi
2011-06-29  8:33       ` Paolo Bonzini
2011-06-29  8:33         ` [Qemu-devel] " Paolo Bonzini
2011-06-29  9:39         ` Stefan Hajnoczi
2011-06-29  9:39           ` [Qemu-devel] " Stefan Hajnoczi
2011-06-29 10:07           ` Christoph Hellwig
2011-06-29 10:07           ` Christoph Hellwig
2011-06-29 10:07             ` [Qemu-devel] " Christoph Hellwig
2011-06-29 10:23             ` Hannes Reinecke
2011-06-29 10:23             ` Hannes Reinecke [this message]
2011-06-29 10:23               ` [Qemu-devel] " Hannes Reinecke
2011-06-29 10:27               ` Christoph Hellwig
2011-06-29 10:27                 ` [Qemu-devel] " Christoph Hellwig
2011-06-29 10:27               ` Christoph Hellwig
2011-07-01  6:41           ` Paolo Bonzini
2011-07-01  6:41           ` Paolo Bonzini
2011-07-01  6:41             ` [Qemu-devel] " Paolo Bonzini
2011-07-01  7:14             ` Hannes Reinecke
2011-07-01  7:14               ` [Qemu-devel] " Hannes Reinecke
2011-07-01  8:35               ` Paolo Bonzini
2011-07-01  8:35                 ` [Qemu-devel] " Paolo Bonzini
2011-07-04 13:38                 ` Hai Dong,Li
2011-07-04 13:38                   ` [Qemu-devel] " Hai Dong,Li
2011-07-04 14:22                   ` Stefan Hajnoczi
2011-07-04 14:22                     ` [Qemu-devel] " Stefan Hajnoczi
2011-07-04 14:22                   ` Stefan Hajnoczi
2011-07-04 13:38                 ` Hai Dong,Li
2011-07-01  8:35               ` Paolo Bonzini
2011-07-01  7:14             ` Hannes Reinecke
2011-06-29  9:39         ` Stefan Hajnoczi
2011-06-29  8:33       ` Paolo Bonzini
2011-06-14  8:39     ` Hannes Reinecke
2011-06-12  7:51   ` Michael S. Tsirkin
2011-06-12  7:51     ` [Qemu-devel] " Michael S. Tsirkin
2011-06-14 15:30     ` Hannes Reinecke
2011-06-14 15:30     ` Hannes Reinecke
2011-06-14 15:30       ` [Qemu-devel] " Hannes Reinecke
2011-06-29 10:00       ` Christoph Hellwig
2011-06-29 10:00         ` [Qemu-devel] " Christoph Hellwig
2011-06-29 10:00       ` Christoph Hellwig
2011-06-29  8:23     ` Paolo Bonzini
2011-06-29  8:23     ` Paolo Bonzini
2011-06-29  8:23       ` [Qemu-devel] " Paolo Bonzini
2011-06-29  8:46       ` Michael S. Tsirkin
2011-06-29  8:46       ` Michael S. Tsirkin
2011-06-29  8:46         ` [Qemu-devel] " Michael S. Tsirkin
2011-06-29 10:03       ` Christoph Hellwig
2011-06-29 10:03         ` [Qemu-devel] " Christoph Hellwig
2011-06-29 10:06         ` Paolo Bonzini
2011-06-29 10:06         ` Paolo Bonzini
2011-06-29 10:06           ` [Qemu-devel] " Paolo Bonzini
2011-06-29 10:31           ` Michael S. Tsirkin
2011-06-29 10:31           ` Michael S. Tsirkin
2011-06-29 10:31             ` [Qemu-devel] " Michael S. Tsirkin
2011-06-29 10:35             ` Paolo Bonzini
2011-06-29 10:35               ` [Qemu-devel] " Paolo Bonzini
2011-06-29 10:35             ` Paolo Bonzini
2011-06-29 10:03       ` Christoph Hellwig
2011-06-29 10:01     ` Christoph Hellwig
2011-06-29 10:01       ` [Qemu-devel] " Christoph Hellwig
2011-06-29 10:01     ` Christoph Hellwig
2011-06-12  7:51   ` Michael S. Tsirkin
2011-06-10 12:55 ` Hannes Reinecke
  -- strict thread matches above, loose matches on Subject: below --
2011-06-07 13:43 Paolo Bonzini

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=4E0AFD2A.80102@suse.de \
    --to=hare@suse.de \
    --cc=chellwig@redhat.com \
    --cc=hch@infradead.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=nab@linux-iscsi.org \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@gmail.com \
    --cc=stefanha@linux.vnet.ibm.com \
    --cc=virtualization@lists.linux-foundation.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.