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 <[email protected]>
> ---
> 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