From: Ming Lei <ming....@caonical.com> QEMU block should have supported to read/write at most 0x7fffff * 512 bytes, unfortunately INT_MAX is used to check bytes in both bdrv_co_do_writev() and bdrv_check_byte_request(), so cause write failure if nr_sectors is equal or more than 0x400000.
There are still other INT_MAX usages in block.c, and they might need to change to UINT_MAX too in future, but at least this patch's change can make SCSI WRITE SAME 16 workable. Cc: qemu-sta...@nongnu.org Signed-off-by: Ming Lei <ming....@caonical.com> --- block.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/block.c b/block.c index a612594..ddc18c2 100644 --- a/block.c +++ b/block.c @@ -2607,7 +2607,7 @@ static int bdrv_check_byte_request(BlockDriverState *bs, int64_t offset, { int64_t len; - if (size > INT_MAX) { + if (size > UINT_MAX) { return -EIO; } @@ -3420,7 +3420,7 @@ static int coroutine_fn bdrv_co_do_writev(BlockDriverState *bs, int64_t sector_num, int nb_sectors, QEMUIOVector *qiov, BdrvRequestFlags flags) { - if (nb_sectors < 0 || nb_sectors > (INT_MAX >> BDRV_SECTOR_BITS)) { + if (nb_sectors < 0 || nb_sectors > (UINT_MAX >> BDRV_SECTOR_BITS)) { return -EINVAL; } -- 1.7.9.5