diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2016-07-05 17:53:02 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2016-07-05 17:53:02 +0100 |
commit | 07bee7f4f45e2f956ce566336854b46a74faa2fe (patch) | |
tree | f41db2d8ee59acdfe151d5263107b958345ef4bf /hw/scsi | |
parent | 791b7d2340cfafcac9af7864343cf23504d57804 (diff) | |
parent | b0aaca4d7ff6f03acb9b2c0bc2f0d89267cc5dce (diff) | |
download | qemu-07bee7f4f45e2f956ce566336854b46a74faa2fe.zip qemu-07bee7f4f45e2f956ce566336854b46a74faa2fe.tar.gz qemu-07bee7f4f45e2f956ce566336854b46a74faa2fe.tar.bz2 |
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Block layer patches
# gpg: Signature made Tue 05 Jul 2016 16:46:14 BST
# gpg: using RSA key 0x7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>"
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74 56FE 7F09 B272 C88F 2FD6
* remotes/kevin/tags/for-upstream: (43 commits)
block/qcow2: Don't use cpu_to_*w()
block: Convert bdrv_co_preadv/pwritev to BdrvChild
block: Convert bdrv_prwv_co() to BdrvChild
block: Convert bdrv_pwrite_zeroes() to BdrvChild
block: Convert bdrv_pwrite(v/_sync) to BdrvChild
block: Convert bdrv_pread(v) to BdrvChild
block: Convert bdrv_write() to BdrvChild
block: Convert bdrv_read() to BdrvChild
block: Use BlockBackend for I/O in bdrv_commit()
block: Move bdrv_commit() to block/commit.c
block: Convert bdrv_co_do_readv/writev to BdrvChild
block: Convert bdrv_aio_writev() to BdrvChild
block: Convert bdrv_aio_readv() to BdrvChild
block: Convert bdrv_co_writev() to BdrvChild
block: Convert bdrv_co_readv() to BdrvChild
vhdx: Some more BlockBackend use in vhdx_create()
blkreplay: Convert to byte-based I/O
vvfat: Use BdrvChild for s->qcow
block/qdev: Fix NULL access when using BB twice
block: fix return code for partial write for Linux AIO
...
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/scsi')
-rw-r--r-- | hw/scsi/scsi-generic.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/hw/scsi/scsi-generic.c b/hw/scsi/scsi-generic.c index 6a2d89a..7a588a7 100644 --- a/hw/scsi/scsi-generic.c +++ b/hw/scsi/scsi-generic.c @@ -225,13 +225,14 @@ 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); - if (max_xfer_len) { - stl_be_p(&r->buf[8], max_xfer_len); - /* Also take care of the opt xfer len. */ - if (ldl_be_p(&r->buf[12]) > max_xfer_len) { - stl_be_p(&r->buf[12], max_xfer_len); - } + uint32_t max_transfer = + blk_get_max_transfer(s->conf.blk) / s->blocksize; + + assert(max_transfer); + stl_be_p(&r->buf[8], max_transfer); + /* Also take care of the opt xfer len. */ + if (ldl_be_p(&r->buf[12]) > max_transfer) { + stl_be_p(&r->buf[12], max_transfer); } } scsi_req_data(&r->req, len); |