From: "Michael S. Tsirkin" <mst@redhat.com> To: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> Cc: qemu-devel@nongnu.org, kvm@vger.kernel.org, Anthony Liguori <aliguori@us.ibm.com>, Kevin Wolf <kwolf@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Asias He <asias@redhat.com>, Khoa Huynh <khoa@us.ibm.com> Subject: Re: [RFC v9 23/27] virtio-blk: Stub out SCSI commands Date: Wed, 18 Jul 2012 22:05:14 +0300 [thread overview] Message-ID: <20120718190514.GF2498@redhat.com> (raw) In-Reply-To: <1342624074-24650-24-git-send-email-stefanha@linux.vnet.ibm.com> On Wed, Jul 18, 2012 at 04:07:50PM +0100, Stefan Hajnoczi wrote: > Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> Why? > --- > hw/virtio-blk.c | 25 +++++++++++++++++-------- > 1 file changed, 17 insertions(+), 8 deletions(-) > > diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c > index 51807b5..8734029 100644 > --- a/hw/virtio-blk.c > +++ b/hw/virtio-blk.c > @@ -215,14 +215,8 @@ static void process_request(IOQueue *ioq, struct iovec iov[], unsigned int out_n > > /* TODO Linux sets the barrier bit even when not advertised! */ > uint32_t type = outhdr->type & ~VIRTIO_BLK_T_BARRIER; > - > - if (unlikely(type & ~(VIRTIO_BLK_T_OUT | VIRTIO_BLK_T_FLUSH))) { > - fprintf(stderr, "virtio-blk unsupported request type %#x\n", outhdr->type); > - exit(1); > - } > - > struct iocb *iocb; > - switch (type & (VIRTIO_BLK_T_OUT | VIRTIO_BLK_T_FLUSH)) { > + switch (type & (VIRTIO_BLK_T_OUT | VIRTIO_BLK_T_SCSI_CMD | VIRTIO_BLK_T_FLUSH)) { > case VIRTIO_BLK_T_IN: > if (unlikely(out_num != 1)) { > fprintf(stderr, "virtio-blk invalid read request\n"); > @@ -239,6 +233,21 @@ static void process_request(IOQueue *ioq, struct iovec iov[], unsigned int out_n > iocb = ioq_rdwr(ioq, false, &iov[1], out_num - 1, outhdr->sector * 512UL); /* TODO is it always 512? */ > break; > > + case VIRTIO_BLK_T_SCSI_CMD: > + if (unlikely(in_num == 0)) { > + fprintf(stderr, "virtio-blk invalid SCSI command request\n"); > + exit(1); > + } > + > + /* TODO support SCSI commands */ > + { > + VirtIOBlock *s = container_of(ioq, VirtIOBlock, ioqueue); > + inhdr->status = VIRTIO_BLK_S_UNSUPP; > + vring_push(&s->vring, head, sizeof *inhdr); > + virtio_blk_notify_guest(s); > + } > + return; > + > case VIRTIO_BLK_T_FLUSH: > if (unlikely(in_num != 1 || out_num != 1)) { > fprintf(stderr, "virtio-blk invalid flush request\n"); > @@ -256,7 +265,7 @@ static void process_request(IOQueue *ioq, struct iovec iov[], unsigned int out_n > return; > > default: > - fprintf(stderr, "virtio-blk multiple request type bits set\n"); > + fprintf(stderr, "virtio-blk unsupported request type %#x\n", outhdr->type); > exit(1); > } > > -- > 1.7.10.4
WARNING: multiple messages have this Message-ID (diff)
From: "Michael S. Tsirkin" <mst@redhat.com> To: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> Cc: Kevin Wolf <kwolf@redhat.com>, Anthony Liguori <aliguori@us.ibm.com>, kvm@vger.kernel.org, qemu-devel@nongnu.org, Khoa Huynh <khoa@us.ibm.com>, Paolo Bonzini <pbonzini@redhat.com>, Asias He <asias@redhat.com> Subject: Re: [Qemu-devel] [RFC v9 23/27] virtio-blk: Stub out SCSI commands Date: Wed, 18 Jul 2012 22:05:14 +0300 [thread overview] Message-ID: <20120718190514.GF2498@redhat.com> (raw) In-Reply-To: <1342624074-24650-24-git-send-email-stefanha@linux.vnet.ibm.com> On Wed, Jul 18, 2012 at 04:07:50PM +0100, Stefan Hajnoczi wrote: > Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> Why? > --- > hw/virtio-blk.c | 25 +++++++++++++++++-------- > 1 file changed, 17 insertions(+), 8 deletions(-) > > diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c > index 51807b5..8734029 100644 > --- a/hw/virtio-blk.c > +++ b/hw/virtio-blk.c > @@ -215,14 +215,8 @@ static void process_request(IOQueue *ioq, struct iovec iov[], unsigned int out_n > > /* TODO Linux sets the barrier bit even when not advertised! */ > uint32_t type = outhdr->type & ~VIRTIO_BLK_T_BARRIER; > - > - if (unlikely(type & ~(VIRTIO_BLK_T_OUT | VIRTIO_BLK_T_FLUSH))) { > - fprintf(stderr, "virtio-blk unsupported request type %#x\n", outhdr->type); > - exit(1); > - } > - > struct iocb *iocb; > - switch (type & (VIRTIO_BLK_T_OUT | VIRTIO_BLK_T_FLUSH)) { > + switch (type & (VIRTIO_BLK_T_OUT | VIRTIO_BLK_T_SCSI_CMD | VIRTIO_BLK_T_FLUSH)) { > case VIRTIO_BLK_T_IN: > if (unlikely(out_num != 1)) { > fprintf(stderr, "virtio-blk invalid read request\n"); > @@ -239,6 +233,21 @@ static void process_request(IOQueue *ioq, struct iovec iov[], unsigned int out_n > iocb = ioq_rdwr(ioq, false, &iov[1], out_num - 1, outhdr->sector * 512UL); /* TODO is it always 512? */ > break; > > + case VIRTIO_BLK_T_SCSI_CMD: > + if (unlikely(in_num == 0)) { > + fprintf(stderr, "virtio-blk invalid SCSI command request\n"); > + exit(1); > + } > + > + /* TODO support SCSI commands */ > + { > + VirtIOBlock *s = container_of(ioq, VirtIOBlock, ioqueue); > + inhdr->status = VIRTIO_BLK_S_UNSUPP; > + vring_push(&s->vring, head, sizeof *inhdr); > + virtio_blk_notify_guest(s); > + } > + return; > + > case VIRTIO_BLK_T_FLUSH: > if (unlikely(in_num != 1 || out_num != 1)) { > fprintf(stderr, "virtio-blk invalid flush request\n"); > @@ -256,7 +265,7 @@ static void process_request(IOQueue *ioq, struct iovec iov[], unsigned int out_n > return; > > default: > - fprintf(stderr, "virtio-blk multiple request type bits set\n"); > + fprintf(stderr, "virtio-blk unsupported request type %#x\n", outhdr->type); > exit(1); > } > > -- > 1.7.10.4
next prev parent reply other threads:[~2012-07-18 19:04 UTC|newest] Thread overview: 90+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-07-18 15:07 [RFC v9 00/27] virtio: virtio-blk data plane Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 01/27] virtio-blk: Remove virtqueue request handling code Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 02/27] virtio-blk: Set up host notifier for data plane Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 03/27] virtio-blk: Data plane thread event loop Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 04/27] virtio-blk: Map vring Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 05/27] virtio-blk: Do cheapest possible memory mapping Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 06/27] virtio-blk: Take PCI memory range into account Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 18:29 ` Michael S. Tsirkin 2012-07-18 18:29 ` [Qemu-devel] " Michael S. Tsirkin 2012-07-19 9:14 ` Stefan Hajnoczi 2012-07-19 9:14 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-19 9:16 ` Stefan Hajnoczi 2012-07-19 9:16 ` Stefan Hajnoczi 2012-07-19 9:29 ` Avi Kivity 2012-07-19 9:29 ` Avi Kivity 2012-07-18 15:07 ` [RFC v9 07/27] virtio-blk: Put dataplane code into its own directory Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 08/27] virtio-blk: Read requests from the vring Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 09/27] virtio-blk: Add Linux AIO queue Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 10/27] virtio-blk: Stop data plane thread cleanly Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 11/27] virtio-blk: Indirect vring and flush support Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 18:28 ` Michael S. Tsirkin 2012-07-18 18:28 ` [Qemu-devel] " Michael S. Tsirkin 2012-07-18 19:02 ` Michael S. Tsirkin 2012-07-18 19:02 ` [Qemu-devel] " Michael S. Tsirkin 2012-07-18 15:07 ` [RFC v9 12/27] virtio-blk: Add workaround for BUG_ON() dependency in virtio_ring.h Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 19:03 ` Michael S. Tsirkin 2012-07-18 19:03 ` [Qemu-devel] " Michael S. Tsirkin 2012-07-18 15:07 ` [RFC v9 13/27] virtio-blk: Increase max requests for indirect vring Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 14/27] virtio-blk: Use pthreads instead of qemu-thread Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 15/27] notifier: Add a function to set the notifier Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 16/27] virtio-blk: Kick data plane thread using event notifier set Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 17/27] virtio-blk: Use guest notifier to raise interrupts Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 18/27] virtio-blk: Call ioctl() directly instead of irqfd Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:40 ` Michael S. Tsirkin 2012-07-18 15:40 ` [Qemu-devel] " Michael S. Tsirkin 2012-07-19 9:11 ` Stefan Hajnoczi 2012-07-19 9:11 ` Stefan Hajnoczi 2012-07-19 9:19 ` Michael S. Tsirkin 2012-07-19 9:19 ` Michael S. Tsirkin 2012-07-18 15:07 ` [RFC v9 19/27] virtio-blk: Disable guest->host notifies while processing vring Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 20/27] virtio-blk: Add ioscheduler to detect mergable requests Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 21/27] virtio-blk: Add basic request merging Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 22/27] virtio-blk: Fix " Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 19:04 ` Michael S. Tsirkin 2012-07-18 19:04 ` [Qemu-devel] " Michael S. Tsirkin 2012-07-18 15:07 ` [RFC v9 23/27] virtio-blk: Stub out SCSI commands Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 19:05 ` Michael S. Tsirkin [this message] 2012-07-18 19:05 ` Michael S. Tsirkin 2012-07-18 15:07 ` [RFC v9 24/27] virtio-blk: fix incorrect length Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 25/27] msix: fix irqchip breakage in msix_try_notify_from_thread() Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 26/27] msix: use upstream kvm_irqchip_set_irq() Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:07 ` [RFC v9 27/27] virtio-blk: add EVENT_IDX support to dataplane Stefan Hajnoczi 2012-07-18 15:07 ` [Qemu-devel] " Stefan Hajnoczi 2012-07-18 15:43 ` [RFC v9 00/27] virtio: virtio-blk data plane Michael S. Tsirkin 2012-07-18 15:43 ` [Qemu-devel] " Michael S. Tsirkin 2012-07-18 16:18 ` Khoa Huynh 2012-07-18 16:18 ` [Qemu-devel] " Khoa Huynh 2012-07-18 16:41 ` Khoa Huynh 2012-07-18 16:41 ` [Qemu-devel] " Khoa Huynh 2012-07-18 15:49 ` Michael S. Tsirkin 2012-07-18 15:49 ` [Qemu-devel] " Michael S. Tsirkin 2012-07-19 9:48 ` Stefan Hajnoczi 2012-07-19 9:48 ` Stefan Hajnoczi
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=20120718190514.GF2498@redhat.com \ --to=mst@redhat.com \ --cc=aliguori@us.ibm.com \ --cc=asias@redhat.com \ --cc=khoa@us.ibm.com \ --cc=kvm@vger.kernel.org \ --cc=kwolf@redhat.com \ --cc=pbonzini@redhat.com \ --cc=qemu-devel@nongnu.org \ --cc=stefanha@linux.vnet.ibm.com \ /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: linkBe 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.