On Thu, 06/23 16:37, Eric Blake wrote: > s->blocksize may be larger than 512, in which case our > tweaks to max_xfer_len and opt_xfer_len must be scaled > appropriately. > > Reported-by: Fam Zheng <f...@redhat.com> > Signed-off-by: Eric Blake <ebl...@redhat.com> > CC: qemu-sta...@nongnu.org > > --- > v3: new patch > --- > hw/scsi/scsi-generic.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c > index 6a2d89a..75e227d 100644 > --- a/hw/scsi/scsi-generic.c > +++ b/hw/scsi/scsi-generic.c > @@ -225,7 +225,8 @@ static void scsi_read_complete(void * opaque, int ret) > if (s->type == TYPE_DISK && > r->req.cmd.buf[0] == INQUIRY && > r->req.cmd.buf[2] == 0xb0) { > - uint32_t max_xfer_len = blk_get_max_transfer_length(s->conf.blk); > + uint32_t max_xfer_len = blk_get_max_transfer_length(s->conf.blk) / > + (s->blocksize / BDRV_SECTOR_SIZE); > if (max_xfer_len) { > stl_be_p(&r->buf[8], max_xfer_len); > /* Also take care of the opt xfer len. */ > -- > 2.5.5 >
Reviewed-by: Fam Zheng <f...@redhat.com>