rbd: shift byte count as a 64-bit value
Otherwise, reads of more than 2GB fail. Until commit7bbca9e290
, reads of 2^41 bytes succeeded at least theoretically. In fact, pdiscard ought to receive a 64-bit integer as the count for the same reason. Reported by Coverity. Fixes:7bbca9e290
Cc: qemu-stable@nongnu.org Cc: kwolf@redhat.com Cc: eblake@redhat.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
@@ -733,7 +733,7 @@ static BlockAIOCB *qemu_rbd_aio_readv(BlockDriverState *bs,
|
|||||||
void *opaque)
|
void *opaque)
|
||||||
{
|
{
|
||||||
return rbd_start_aio(bs, sector_num << BDRV_SECTOR_BITS, qiov,
|
return rbd_start_aio(bs, sector_num << BDRV_SECTOR_BITS, qiov,
|
||||||
nb_sectors << BDRV_SECTOR_BITS, cb, opaque,
|
(int64_t) nb_sectors << BDRV_SECTOR_BITS, cb, opaque,
|
||||||
RBD_AIO_READ);
|
RBD_AIO_READ);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -745,7 +745,7 @@ static BlockAIOCB *qemu_rbd_aio_writev(BlockDriverState *bs,
|
|||||||
void *opaque)
|
void *opaque)
|
||||||
{
|
{
|
||||||
return rbd_start_aio(bs, sector_num << BDRV_SECTOR_BITS, qiov,
|
return rbd_start_aio(bs, sector_num << BDRV_SECTOR_BITS, qiov,
|
||||||
nb_sectors << BDRV_SECTOR_BITS, cb, opaque,
|
(int64_t) nb_sectors << BDRV_SECTOR_BITS, cb, opaque,
|
||||||
RBD_AIO_WRITE);
|
RBD_AIO_WRITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user