Am 28.01.2013 18:07, schrieb Benoît Canet:
> Check that every bs file return the same length.
> If not return -EIO to disable the quorum and
> avoid length discrepancy.
> 
> Signed-off-by: Benoit Canet <ben...@irqsave.net>
> ---
>  block/quorum.c |   20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
> 
> diff --git a/block/quorum.c b/block/quorum.c
> index 4c552e4..fe920e7 100644
> --- a/block/quorum.c
> +++ b/block/quorum.c
> @@ -497,12 +497,32 @@ static BlockDriverAIOCB 
> *quorum_aio_writev(BlockDriverState *bs,
>      return &acb->common;
>  }
>  
> +static int64_t quorum_getlength(BlockDriverState *bs)
> +{
> +    BDRVQuorumState *s = bs->opaque;
> +    int64_t result;
> +    int i;
> +
> +    /* check that every file have the same length */

"all files have" or "every file has"

> +    result = bdrv_getlength(s->bs[0]);
> +    for (i = 1; i < s->total; i++) {
> +        int64_t value = bdrv_getlength(s->bs[i]);
> +        if (value != result) {
> +            return -EIO;
> +        }
> +    }
> +
> +    return result;
> +}

Should bdrv_getlength() error returns be handled in some way?

Kevin

Reply via email to