Skip to content

Commit

Permalink
quorum: Create BDRVQuorumState and BlkDriver and do init.
Browse files Browse the repository at this point in the history
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>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  • Loading branch information
benoit-canet authored and kevmw committed Feb 21, 2014
1 parent 27cec15 commit cadebd7
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions block/quorum.c
Expand Up @@ -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 if a difference is spotted its
* location is printed and the code aborts.
* 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
Expand Down Expand Up @@ -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);

0 comments on commit cadebd7

Please sign in to comment.