diff mbox

[V17,02/12] quorum: Create BDRVQuorumState and BlkDriver and do init.

Message ID 1392242799-16364-3-git-send-email-benoit.canet@irqsave.net
State New
Headers show

Commit Message

Benoît Canet Feb. 12, 2014, 10:06 p.m. UTC
From: Benoît Canet <benoit@irqsave.net>

Create the structure holding the quorum settings and write the minimal block
driver instanciation boilerplate.

Signed-off-by: Benoit Canet <benoit@irqsave.net>
Reviewed-by: Max Reitz <mreitz@redhat.com>
---
 block/quorum.c | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

Comments

Max Reitz Feb. 15, 2014, 1:22 a.m. UTC | #1
On 12.02.2014 23:06, Benoît Canet wrote:
> From: Benoît Canet <benoit@irqsave.net>
>
> Create the structure holding the quorum settings and write the minimal block
> driver instanciation boilerplate.
>
> Signed-off-by: Benoit Canet <benoit@irqsave.net>
> Reviewed-by: Max Reitz <mreitz@redhat.com>
> ---
>   block/quorum.c | 31 +++++++++++++++++++++++++++++++
>   1 file changed, 31 insertions(+)
>
> diff --git a/block/quorum.c b/block/quorum.c
> index 950f5cc..36c5bb8 100644
> --- a/block/quorum.c
> +++ b/block/quorum.c
> @@ -15,6 +15,23 @@
>   
>   #include "block/block_int.h"
>   
> +/* the following structure holds the state of one quorum instance */
> +typedef struct BDRVQuorumState {
> +    BlockDriverState **bs; /* children BlockDriverStates */
> +    int num_children;      /* children count */
> +    int threshold;         /* if less than threshold children reads gave the
> +                            * same result a quorum error occurs.
> +                            */
> +    bool is_blkverify;     /* true if the driver is in blkverify mode
> +                            * Writes are mirrored on two children devices.
> +                            * On reads the two children devices contents are

Probably better with apostrophe: "children devices' contents".

> +                            * compared and when a difference is spotted its

Since we're not rooting for an error, I'd prefer an "if" instead of "when".

> +                            * location is printed and the code abort.

"aborts"

Reviewed-by: Max Reitz <mreitz@redhat.com>

> +                            * It is useful to debug other block drivers by
> +                            * comparing them with a reference one.
> +                            */
> +} BDRVQuorumState;
> +
>   typedef struct QuorumAIOCB QuorumAIOCB;
>   
>   /* Quorum will create one instance of the following structure per operation it
> @@ -51,3 +68,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);
diff mbox

Patch

diff --git a/block/quorum.c b/block/quorum.c
index 950f5cc..36c5bb8 100644
--- a/block/quorum.c
+++ b/block/quorum.c
@@ -15,6 +15,23 @@ 
 
 #include "block/block_int.h"
 
+/* the following structure holds the state of one quorum instance */
+typedef struct BDRVQuorumState {
+    BlockDriverState **bs; /* children BlockDriverStates */
+    int num_children;      /* children count */
+    int threshold;         /* if less than threshold children reads gave the
+                            * same result a quorum error occurs.
+                            */
+    bool is_blkverify;     /* true if the driver is in blkverify mode
+                            * Writes are mirrored on two children devices.
+                            * On reads the two children devices contents are
+                            * compared and when a difference is spotted its
+                            * location is printed and the code abort.
+                            * It is useful to debug other block drivers by
+                            * comparing them with a reference one.
+                            */
+} BDRVQuorumState;
+
 typedef struct QuorumAIOCB QuorumAIOCB;
 
 /* Quorum will create one instance of the following structure per operation it
@@ -51,3 +68,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);