[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 5/5] block/scsi: correctly emulate the VPD block limits page
From: |
Maxim Levitsky |
Subject: |
[PATCH v2 5/5] block/scsi: correctly emulate the VPD block limits page |
Date: |
Wed, 9 Dec 2020 15:53:55 +0200 |
When the device doesn't support the VPD block limits page, we emulate it even
for SCSI passthrough.
As a part of the emulation we need to add it to the 'Supported VPD Pages'
The code that does this adds it to the page, but it doesn't increase the length
of the data to be copied to the guest, thus the guest never sees the VPD block
limits page as supported.
Bump the transfer size by 1 in this case.
Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
---
hw/scsi/scsi-generic.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c
index 6df67bf889..4354469841 100644
--- a/hw/scsi/scsi-generic.c
+++ b/hw/scsi/scsi-generic.c
@@ -134,7 +134,7 @@ static int execute_command(BlockBackend *blk,
return 0;
}
-static void scsi_handle_inquiry_reply(SCSIGenericReq *r, SCSIDevice *s)
+static int scsi_handle_inquiry_reply(SCSIGenericReq *r, SCSIDevice *s, int len)
{
uint8_t page, page_idx;
@@ -200,8 +200,12 @@ static void scsi_handle_inquiry_reply(SCSIGenericReq *r,
SCSIDevice *s)
r->buf[page_idx] = 0xb0;
}
stw_be_p(r->buf + 2, lduw_be_p(r->buf + 2) + 1);
+
+ if (len < r->buflen)
+ len++;
}
}
+ return len;
}
static int scsi_generic_emulate_block_limits(SCSIGenericReq *r, SCSIDevice *s)
@@ -316,7 +320,7 @@ static void scsi_read_complete(void * opaque, int ret)
}
}
if (r->req.cmd.buf[0] == INQUIRY) {
- scsi_handle_inquiry_reply(r, s);
+ len = scsi_handle_inquiry_reply(r, s, len);
}
req_complete:
--
2.26.2
- [PATCH v2 0/5] SCSI: fix transfer limits for SCSI passthrough, Maxim Levitsky, 2020/12/09
- [PATCH v2 1/5] file-posix: split hdev_refresh_limits from raw_refresh_limits, Maxim Levitsky, 2020/12/09
- [PATCH v2 2/5] file-posix: add sg_get_max_segments that actually works with sg, Maxim Levitsky, 2020/12/09
- [PATCH v2 3/5] block: add max_ioctl_transfer to BlockLimits, Maxim Levitsky, 2020/12/09
- [PATCH v2 4/5] block: use blk_get_max_ioctl_transfer for SCSI passthrough, Maxim Levitsky, 2020/12/09
- [PATCH v2 5/5] block/scsi: correctly emulate the VPD block limits page,
Maxim Levitsky <=
- Re: [PATCH v2 0/5] SCSI: fix transfer limits for SCSI passthrough, no-reply, 2020/12/09