[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC V5 00/11] Quorum disk image corruption resiliency
From: |
Benoît Canet |
Subject: |
[Qemu-devel] [RFC V5 00/11] Quorum disk image corruption resiliency |
Date: |
Mon, 27 Aug 2012 09:30:18 +0200 |
This patchset create a block driver implementing a quorum using total qemu disk
images. Writes are mirrored on the $total files.
For the reading part the $total files are read at the same time and a vote is
done to determine if a qiov version is present $threshold or more times. It
then return
this majority version to the upper layers.
When i < $threshold versions of the data are returned by the lower layer the
quorum is broken and the read return -EIO.
The goal of this patchset is to be turned in a QEMU block filter living just
above raw-*.c and below qcow2/qed when the required infrastructure will be done.
Main use of this feature will be people using NFS appliances which can be
subjected to bitflip errors.
This patchset can be used to replace blkverify and the out of tree blkmirror.
usage: -drive
file=quorum:threshold/total:image_1.raw,,...,,image_total.raw,if=virtio,cache=none
in v2:
eblake: fix typos
squash two first commits
afärber: Modify the Makefile on first commit
bcanet: move function prototype of quorum.c one patch down
in v3:
Blue Swirl: change char * to uint8_t * in QuorumSingleAIOCB
Eric Blake: Add escaping of the : separator
Allow to specify the n/m ratio parameters of the Quorum
Stefan Hajnoczi: Squash quorum_close and quorum_open patch to avoid leak
Add missing bdrv_delete() in quorum_close
simpler quorum_getlength
make the quorum_check_ret threshold a user setting (bind it to
n)
move blkverify_iovec_clone() and blkverify_iovec_compare() to
cutils.c
free unconditionally qemu_blockalign() with qemu_vfree()
turn assignement into assert in quorum_copy_qiov()
in v4:
Eric Blake: verbose commit message for "Add quorum_open() and quorum_close()"
use of a bool for the escape variable in the same commit
simplify a if to a one liner in the same commit
replace "+= 1" by ++ in a number of places
make quorum_getlength return a quorum vote.
Blue Swirl: replace n and m by threshold and total
ignore flush errors in quorum_co_flush
Stefan Hajnoczi: removal of a macro in "Add quorum mechanism"
call qemu_iovec_destroy in the bh
Benoît Canet: Now use QuorumVoteItem and QuorumVoteVersion as names for the
voting structs
refactor and rename function to quorum_count_vote.
in v5:
Blue swirl: replace ':' by ',' as separator to allow networked path
replace remaining occurence of n and m by threshold and total
Eric Blake: fix commit message about escaping
Benoît Canet: Factorise voting into quorum_get_vote_winner()
Create quorum_invalidate_cache to enable live migration
Create quorum_co_is_allocated to enable streaming.
Fix escaping
Benoît Canet (11):
quorum: Create quorum.c, add QuorumSingleAIOCB and QuorumAIOCB.
quorum: Create BDRVQuorumState and BlkDriver and do init.
quorum: Add quorum_open() and quorum_close().
quorum: Add quorum_aio_writev and its dependencies.
blkverify: Extract qemu_iovec_clone() and qemu_iovec_compare() from
blkverify.
quorum: Add quorum_co_flush().
quorum: Add quorum_aio_readv.
quorum: Add quorum mechanism.
quorum: Add quorum_getlength().
quorum: Add quorum_invalidate_cache().
quorum: Add quorum_co_is_allocated.
block/Makefile.objs | 1 +
block/blkverify.c | 108 +--------
block/quorum.c | 638 +++++++++++++++++++++++++++++++++++++++++++++++++++
cutils.c | 103 +++++++++
qemu-common.h | 2 +
5 files changed, 746 insertions(+), 106 deletions(-)
create mode 100644 block/quorum.c
--
1.7.9.5
- [Qemu-devel] [RFC V5 00/11] Quorum disk image corruption resiliency,
Benoît Canet <=
- [Qemu-devel] [RFC V5 01/11] quorum: Create quorum .c, add QuorumSingleAIOCB and QuorumAIOCB., Benoît Canet, 2012/08/27
- [Qemu-devel] [RFC V5 02/11] quorum: Create BDRVQuorumState and BlkDriver and do init., Benoît Canet, 2012/08/27
- [Qemu-devel] [RFC V5 05/11] blkverify: Extract qemu_iovec_clone() and qemu_iovec_compare() from blkverify., Benoît Canet, 2012/08/27
- [Qemu-devel] [RFC V5 04/11] quorum: Add quorum_aio_writev and its dependencies., Benoît Canet, 2012/08/27
- [Qemu-devel] [RFC V5 03/11] quorum: Add quorum_open() and quorum_close()., Benoît Canet, 2012/08/27
- [Qemu-devel] [RFC V5 07/11] quorum: Add quorum_aio_readv., Benoît Canet, 2012/08/27
- [Qemu-devel] [RFC V5 08/11] quorum: Add quorum mechanism., Benoît Canet, 2012/08/27
- [Qemu-devel] [RFC V5 06/11] quorum: Add quorum_co_flush()., Benoît Canet, 2012/08/27