From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40394) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XyjUf-0005Oo-1X for qemu-devel@nongnu.org; Wed, 10 Dec 2014 10:48:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XyjUW-0005JF-1p for qemu-devel@nongnu.org; Wed, 10 Dec 2014 10:48:00 -0500 Received: from mail-pa0-x235.google.com ([2607:f8b0:400e:c03::235]:56467) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XyjUV-0005J2-RW for qemu-devel@nongnu.org; Wed, 10 Dec 2014 10:47:51 -0500 Received: by mail-pa0-f53.google.com with SMTP id kq14so2984994pab.26 for ; Wed, 10 Dec 2014 07:47:51 -0800 (PST) From: Jun Li Date: Wed, 10 Dec 2014 23:47:37 +0800 Message-Id: <1418226457-22239-1-git-send-email-junmuzi@gmail.com> Subject: [Qemu-devel] [PATCH] rbd: print a clear error message when write beyond EOF List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, famz@redhat.com, juli@redhat.com, stefanha@redhat.com, josh.durgin@inktank.com, Jun Li 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 --- 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