[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 28/32] usb storage: handle long responses
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PATCH v4 28/32] usb storage: handle long responses |
Date: |
Wed, 12 Jan 2011 12:20:10 +0100 |
The scsi layer may return us more data than the guests wants to have.
Handle this by just ignoring the extra bytes and calling the
{read,write}_data callback to finish the request.
Seen happening in real life with some extended inquiry command.
With this patch applied the linux kernel stops reseting the device
once at boot.
Signed-off-by: Gerd Hoffmann <address@hidden>
---
hw/usb-msd.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/usb-msd.c b/hw/usb-msd.c
index 28c12dd..729d96c 100644
--- a/hw/usb-msd.c
+++ b/hw/usb-msd.c
@@ -187,7 +187,7 @@ static void usb_msd_copy_data(MSDState *s)
s->usb_buf += len;
s->scsi_buf += len;
s->data_len -= len;
- if (s->scsi_len == 0) {
+ if (s->scsi_len == 0 || s->data_len == 0) {
if (s->mode == USB_MSDM_DATAIN) {
s->scsi_dev->info->read_data(s->scsi_dev, s->tag);
} else if (s->mode == USB_MSDM_DATAOUT) {
@@ -434,7 +434,7 @@ static int usb_msd_handle_data(USBDevice *dev, USBPacket *p)
break;
case USB_MSDM_DATAIN:
- DPRINTF("Data in %d/%d\n", len, s->data_len);
+ DPRINTF("Data in %d/%d, scsi_len %d\n", len, s->data_len,
s->scsi_len);
if (len > s->data_len)
len = s->data_len;
s->usb_buf = data;
--
1.7.1
- [Qemu-devel] [PATCH v4 20/32] usb: hid: remote wakeup support., (continued)
- [Qemu-devel] [PATCH v4 20/32] usb: hid: remote wakeup support., Gerd Hoffmann, 2011/01/12
- [Qemu-devel] [PATCH v4 18/32] usb: uhci: remote wakeup support., Gerd Hoffmann, 2011/01/12
- [Qemu-devel] [PATCH v4 17/32] usb: add usb_wakeup() + wakeup callback to port ops, Gerd Hoffmann, 2011/01/12
- [Qemu-devel] [PATCH v4 31/32] usb: rewrite fw path, fix numbering, Gerd Hoffmann, 2011/01/12
- [Qemu-devel] [PATCH v4 24/32] usb: add usb_desc_attach, Gerd Hoffmann, 2011/01/12
- [Qemu-devel] [PATCH v4 22/32] usb: add speed mask to ports, Gerd Hoffmann, 2011/01/12
- [Qemu-devel] [PATCH v4 32/32] usb: zap pdev from usbport, Gerd Hoffmann, 2011/01/12
- [Qemu-devel] [PATCH v4 27/32] usb storage: fix status reporting, Gerd Hoffmann, 2011/01/12
- [Qemu-devel] [PATCH v4 28/32] usb storage: handle long responses,
Gerd Hoffmann <=
- [Qemu-devel] [PATCH v4 16/32] usb: rework attach/detach workflow, Gerd Hoffmann, 2011/01/12
- [Qemu-devel] [PATCH v4 25/32] usb: add device qualifier support, Gerd Hoffmann, 2011/01/12
- [Qemu-devel] [PATCH v4 26/32] usb storage: high speed support, Gerd Hoffmann, 2011/01/12
- [Qemu-devel] [PATCH v4 29/32] usb: keep track of physical port address., Gerd Hoffmann, 2011/01/12
- [Qemu-devel] [PATCH v4 30/32] usb: add port property., Gerd Hoffmann, 2011/01/12
- [Qemu-devel] [PATCH v4 13/32] usb: move USB_REQ_{GET, SET}_CONFIGURATION handling to common code, Gerd Hoffmann, 2011/01/12
- [Qemu-devel] Re: [PATCH v4 00/32] usb descriptor overhaul + more, Gerd Hoffmann, 2011/01/21