Currently, as rbd driver do not support dynamic growth when write beyond EOF, so just print a clear error message.
Signed-off-by: Jun Li <junm...@gmail.com> --- block/rbd.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/block/rbd.c b/block/rbd.c index 5b5a64a..65b01f0 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -693,6 +693,20 @@ static BlockAIOCB *qemu_rbd_aio_writev(BlockDriverState *bs, BlockCompletionFunc *cb, void *opaque) { + BDRVRBDState *s = bs->opaque; + uint64_t total_size; + int64_t off, size; + + off = sector_num * BDRV_SECTOR_SIZE; + size = nb_sectors * BDRV_SECTOR_SIZE; + rbd_get_size(s->image, &total_size); + + if (off + size > total_size) { + fprintf(stdout, "Image formats that grow on demand" + "are not supported on rbd.\n"); + return NULL; + } + return rbd_start_aio(bs, sector_num, qiov, nb_sectors, cb, opaque, RBD_AIO_WRITE); } -- 1.9.3