From: "Michael S. Tsirkin" <mst@redhat.com>
To: Cornelia Huck <cornelia.huck@de.ibm.com>
Cc: pbonzini@redhat.com, Jason Wang <jasowang@redhat.com>,
qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH V3 2/3] virtio-blk: fail get_features when both scsi and 1.0 were set
Date: Wed, 22 Jul 2015 17:53:47 +0300 [thread overview]
Message-ID: <20150722175008-mutt-send-email-mst@redhat.com> (raw)
In-Reply-To: <20150722125522.25109a04.cornelia.huck@de.ibm.com>
On Wed, Jul 22, 2015 at 12:55:22PM +0200, Cornelia Huck wrote:
> On Wed, 22 Jul 2015 13:44:14 +0300
> "Michael S. Tsirkin" <mst@redhat.com> wrote:
>
> > On Wed, Jul 22, 2015 at 12:38:40PM +0200, Cornelia Huck wrote:
> > > On Wed, 22 Jul 2015 13:32:17 +0300
> > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > >
> > > > On Wed, Jul 22, 2015 at 12:25:31PM +0200, Cornelia Huck wrote:
> > > > > On Wed, 22 Jul 2015 12:21:32 +0300
> > > > > "Michael S. Tsirkin" <mst@redhat.com> wrote:
> > > > >
> > > > > > On Wed, Jul 22, 2015 at 10:58:43AM +0200, Cornelia Huck wrote:
> > > > > > > On Wed, 22 Jul 2015 13:59:51 +0800
> > > > > > > Jason Wang <jasowang@redhat.com> wrote:
> > > > > > >
> > > > > > > > SCSI passthrough was no longer supported in virtio 1.0, so this patch
> > > > > > > > fail the get_features() when both 1.0 and scsi is set. And also only
> > > > > > > > advertise VIRTIO_BLK_F_SCSI for legacy virtio-blk device.
> > > > > > > >
> > > > > > > > Signed-off-by: Jason Wang <jasowang@redhat.com>
> > > > > > > > ---
> > > > > > > > hw/block/virtio-blk.c | 9 ++++++++-
> > > > > > > > 1 file changed, 8 insertions(+), 1 deletion(-)
> > > > > > > >
> > > > > > > > diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
> > > > > > > > index 4c27974..4716c3e 100644
> > > > > > > > --- a/hw/block/virtio-blk.c
> > > > > > > > +++ b/hw/block/virtio-blk.c
> > > > > > > > @@ -731,7 +731,14 @@ static uint64_t virtio_blk_get_features(VirtIODevice *vdev, uint64_t features,
> > > > > > > > virtio_add_feature(&features, VIRTIO_BLK_F_GEOMETRY);
> > > > > > > > virtio_add_feature(&features, VIRTIO_BLK_F_TOPOLOGY);
> > > > > > > > virtio_add_feature(&features, VIRTIO_BLK_F_BLK_SIZE);
> > > > > > > > - virtio_add_feature(&features, VIRTIO_BLK_F_SCSI);
> > > > > > > > + if (__virtio_has_feature(features, VIRTIO_F_VERSION_1)) {
> > > > > > > > + if (s->conf.scsi) {
> > > > > > > > + error_setg(errp, "Virtio 1.0 does not support scsi passthrough!");
> > > > > > > > + return 0;
> > > > > > > > + }
> > > > > > > > + } else {
> > > > > > > > + virtio_add_feature(&features, VIRTIO_BLK_F_SCSI);
> > > > > > > > + }
> > > > > > > >
> > > > > > > > if (s->conf.config_wce) {
> > > > > > > > virtio_add_feature(&features, VIRTIO_BLK_F_CONFIG_WCE);
> > > > > > >
> > > > > > > Do we advertise F_SCSI even if scsi is not configured in order to keep
> > > > > > > the same bits as before? I'm afraid I don't remember, that thread was
> > > > > > > long :/
> > > > > > >
> > > > > > > I'm asking because I'd like to depend on that bit to decide whether I
> > > > > > > can negotiate revision 1 for ccw and subsequently offer VERSION_1. It
> > > > > > > would be an easy thing to do, and I'd like to avoid mucking around with
> > > > > > > device-specific configuration from the transport.
> > > > > > >
> > > > > > > To illustrate what I'm talking about, my current patchset for virtio-1
> > > > > > > on ccw is here:
> > > > > > >
> > > > > > > git://github.com/cohuck/qemu virtio-1-ccw-2.5
> > > > > >
> > > > > >
> > > > > > I still think you are over-engineering it.
> > > > > >
> > > > > > Just add a property to disable the modern interface.
> > > > > > Anyone using scsi passthrough will have to set that,
> > > > > > if not - above patch will make initialization fail.
> > > > >
> > > > > And I still think requiring user action and not having this work
> > > > > transparently is a bad idea...
> > > >
> > > > Having what work transparently? SCSI passthrough?
> > > > Look, either you agree with Paolo or not.
> > > > Paolo thinks it's a deprecated hack not really worth supporting long term.
> > > > If you agree, I don't see why is asking for an extra property
> > > > such a bit deal. If you don't agree - please open a new thread
> > > > and argue about that.
> > >
> > > I sometimes wonder whether we're arguing about the same thing :(
> > >
> > > Dropping scsi for virtio-1 is fine. Dropping backwards-compatibility is
> > > not. If I upgrade the host, I want the guests to be able to continue
> > > using scsi without needing to fence virtio-1 off manually.
> >
> > Paolo's argument is that no one should be using scsi passthrough.
> >
> > If the feature has users, we should bring it back into virtio 1.
> >
> > If almost one uses it, then no one will suffer too much from getting
> > an error message saying "please set disable-modern=on".
>
> And here's where we disagree. Even if it's exotic, I don't want to
> break existing users.
You should take this disagreement to the virtio TC. QEMU merely
implements what the spec voted by TC says.
> > And there's no reason to make it behave differently
> > between ccw and pci.
> >
> >
> > > >
> > > >
> > > > > Moreover, I will need a revision-fencing mechanism in any case, when we
> > > > > introduce further revisions.
> > > >
> > > > Why? Assuming we drop more features in the future?
> > >
> > > Revisions != features. Think new or changed channel commands, for
> > > example.
> >
> > You likely can just add these unconditionally.
>
> Backwards compatibility?
Compatibility is built-in to revision negotiation, isn't it?
> > How is this related to virtio blk at all?
>
> It isn't, revision handling is generic. It's just the scsi bit that
> triggered it.
--
MST
next prev parent reply other threads:[~2015-07-22 14:53 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-22 5:59 [Qemu-devel] [PATCH V3 0/3] Set correct blk feature for virtio 1.0 Jason Wang
2015-07-22 5:59 ` [Qemu-devel] [PATCH V3 1/3] virtio: get_features() can fail Jason Wang
2015-07-22 5:59 ` [Qemu-devel] [PATCH V3 2/3] virtio-blk: fail get_features when both scsi and 1.0 were set Jason Wang
2015-07-22 8:58 ` Cornelia Huck
2015-07-22 9:21 ` Michael S. Tsirkin
2015-07-22 10:25 ` Cornelia Huck
2015-07-22 10:32 ` Michael S. Tsirkin
2015-07-22 10:38 ` Cornelia Huck
2015-07-22 10:44 ` Michael S. Tsirkin
2015-07-22 10:55 ` Cornelia Huck
2015-07-22 14:53 ` Michael S. Tsirkin [this message]
2015-07-22 16:11 ` Cornelia Huck
2015-07-22 16:34 ` Michael S. Tsirkin
2015-07-23 9:07 ` Cornelia Huck
2015-07-23 9:37 ` Paolo Bonzini
2015-07-23 10:15 ` Cornelia Huck
2015-07-22 9:35 ` Jason Wang
2015-07-22 10:23 ` Cornelia Huck
2015-07-22 9:25 ` Michael S. Tsirkin
2015-07-22 9:52 ` Jason Wang
2015-07-22 10:12 ` Michael S. Tsirkin
2015-07-22 10:13 ` Michael S. Tsirkin
2015-07-22 9:31 ` Daniel P. Berrange
2015-07-22 9:45 ` Jason Wang
2015-07-22 10:19 ` Michael S. Tsirkin
2015-07-22 11:40 ` Paolo Bonzini
2015-07-22 11:46 ` Daniel P. Berrange
2015-07-22 11:53 ` Paolo Bonzini
2015-07-22 14:56 ` Michael S. Tsirkin
2015-07-22 16:15 ` Michael S. Tsirkin
2015-07-22 16:42 ` Paolo Bonzini
2015-07-22 5:59 ` [Qemu-devel] [PATCH V3 3/3] virtio-blk: set VIRTIO_F_ANY_LAYOUT when 1.0 is supported Jason Wang
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=20150722175008-mutt-send-email-mst@redhat.com \
--to=mst@redhat.com \
--cc=cornelia.huck@de.ibm.com \
--cc=jasowang@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.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.