[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] rbd: print a clear error message when write bey
From: |
Jun Li |
Subject: |
Re: [Qemu-devel] [PATCH] rbd: print a clear error message when write beyond EOF |
Date: |
Thu, 11 Dec 2014 11:20:51 +0800 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Wed, 12/10 13:48, Josh Durgin wrote:
> On 12/10/2014 07:47 AM, Jun Li wrote:
> >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 <address@hidden>
> >---
> > 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);
> > }
> >
>
> This is one of the checks librbd does itself, so we could just look for
> an EINVAL from rbd_aio_{read,write,discard} in rbd_start_aio()
> to avoid duplicating the check. An out of bounds i/o is the only way
> EINVAL can be returned from these functions in librbd.
>
Ok, thx. Seems just need to look for an EINVAL from rbd_aio_write is ok. No
need to detect for rbd_aio_{read,discard,flush_wrapper}.
I will submit a new version.
Regards,
Jun Li