Patchwork [V9,02/11] quorum: Create BDRVQuorumState and BlkDriver and do init.

login
register
mail settings
Submitter Benoît Canet
Date Oct. 2, 2013, 12:39 p.m.
Message ID <1380717564-11098-3-git-send-email-benoit@irqsave.net>
Download mbox | patch
Permalink /patch/279725/
State New
Headers show

Comments

Benoît Canet - Oct. 2, 2013, 12:39 p.m.
Signed-off-by: Benoit Canet <benoit@irqsave.net>
---
 block/quorum.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
Max Reitz - Oct. 4, 2013, 2:34 p.m.
On 2013-10-02 14:39, Benoît Canet wrote:
> Signed-off-by: Benoit Canet <benoit@irqsave.net>
> ---
>   block/quorum.c | 25 +++++++++++++++++++++++++
>   1 file changed, 25 insertions(+)
>
> diff --git a/block/quorum.c b/block/quorum.c
> index 76a1fbb..9557e61 100644
> --- a/block/quorum.c
> +++ b/block/quorum.c
> @@ -15,6 +15,16 @@
>   
>   #include "block/block_int.h"
>   
> +/* the following structure hold the state of one quorum instance */
s/hold/holds/

> +typedef struct {
> +    BlockDriverState *bs; /* children BlockDriverStates */
> +    int total;            /* children count */
> +    int threshold;        /* if less than threshold children reads gave the same
> +                           * result a quorum error occur.
s/occur/occurs/

Max

> +                           */
> +    bool is_blkverify;    /* true if the driver is in blkverify mode */
> +} BDRVQuorumState;
> +
>   typedef struct QuorumAIOCB QuorumAIOCB;
>   
>   /* Quorum will create one instance of the following structure per read/write
> @@ -37,6 +47,7 @@ typedef struct QuorumSingleAIOCB {
>    */
>   struct QuorumAIOCB {
>       BlockDriverAIOCB common;
> +    BDRVQuorumState *bqs;
>   
>       /* Request metadata */
>       uint64_t sector_num;
> @@ -52,3 +63,17 @@ struct QuorumAIOCB {
>       bool is_read;
>       int vote_ret;
>   };
> +
> +static BlockDriver bdrv_quorum = {
> +    .format_name        = "quorum",
> +    .protocol_name      = "quorum",
> +
> +    .instance_size      = sizeof(BDRVQuorumState),
> +};
> +
> +static void bdrv_quorum_init(void)
> +{
> +    bdrv_register(&bdrv_quorum);
> +}
> +
> +block_init(bdrv_quorum_init);

Patch

diff --git a/block/quorum.c b/block/quorum.c
index 76a1fbb..9557e61 100644
--- a/block/quorum.c
+++ b/block/quorum.c
@@ -15,6 +15,16 @@ 
 
 #include "block/block_int.h"
 
+/* the following structure hold the state of one quorum instance */
+typedef struct {
+    BlockDriverState *bs; /* children BlockDriverStates */
+    int total;            /* children count */
+    int threshold;        /* if less than threshold children reads gave the same
+                           * result a quorum error occur.
+                           */
+    bool is_blkverify;    /* true if the driver is in blkverify mode */
+} BDRVQuorumState;
+
 typedef struct QuorumAIOCB QuorumAIOCB;
 
 /* Quorum will create one instance of the following structure per read/write
@@ -37,6 +47,7 @@  typedef struct QuorumSingleAIOCB {
  */
 struct QuorumAIOCB {
     BlockDriverAIOCB common;
+    BDRVQuorumState *bqs;
 
     /* Request metadata */
     uint64_t sector_num;
@@ -52,3 +63,17 @@  struct QuorumAIOCB {
     bool is_read;
     int vote_ret;
 };
+
+static BlockDriver bdrv_quorum = {
+    .format_name        = "quorum",
+    .protocol_name      = "quorum",
+
+    .instance_size      = sizeof(BDRVQuorumState),
+};
+
+static void bdrv_quorum_init(void)
+{
+    bdrv_register(&bdrv_quorum);
+}
+
+block_init(bdrv_quorum_init);