Re: [Qemu-devel] [PATCH V9 07/11] quorum: Add quorum_getlength().
On 2013-10-02 14:39, Benoît Canet wrote: Check that every bs file return the same length. *returns If not return -EIO to disable the quorum and I'd prefer If not, (mind the comma) or Otherwise, (comma optional). Max avoid length discrepancy. Signed-off-by: Benoit Canet ben...@irqsave.net --- block/quorum.c | 26 ++ 1 file changed, 26 insertions(+) diff --git a/block/quorum.c b/block/quorum.c index e235ac1..b3649a4 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -541,12 +541,38 @@ 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 all file have the same length */ +result = bdrv_getlength(s-bs[0]); +if (result 0) { +return result; +} +for (i = 1; i s-total; i++) { +int64_t value = bdrv_getlength(s-bs[i]); +if (value 0) { +return value; +} +if (value != result) { +return -EIO; +} +} + +return result; +} + static BlockDriver bdrv_quorum = { .format_name= quorum, .protocol_name = quorum, .instance_size = sizeof(BDRVQuorumState), +.bdrv_getlength = quorum_getlength, + .bdrv_aio_readv = quorum_aio_readv, .bdrv_aio_writev= quorum_aio_writev, };
[Qemu-devel] [PATCH V9 07/11] quorum: Add quorum_getlength().
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 | 26 ++ 1 file changed, 26 insertions(+) diff --git a/block/quorum.c b/block/quorum.c index e235ac1..b3649a4 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -541,12 +541,38 @@ 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 all file have the same length */ +result = bdrv_getlength(s-bs[0]); +if (result 0) { +return result; +} +for (i = 1; i s-total; i++) { +int64_t value = bdrv_getlength(s-bs[i]); +if (value 0) { +return value; +} +if (value != result) { +return -EIO; +} +} + +return result; +} + static BlockDriver bdrv_quorum = { .format_name= quorum, .protocol_name = quorum, .instance_size = sizeof(BDRVQuorumState), +.bdrv_getlength = quorum_getlength, + .bdrv_aio_readv = quorum_aio_readv, .bdrv_aio_writev= quorum_aio_writev, }; -- 1.8.1.2