Re: [Qemu-devel] [PATCH V9 07/11] quorum: Add quorum_getlength().

2013-10-04 Thread Max Reitz

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().

2013-10-02 Thread 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 | 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