[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC V8 00/13] Quorum block filter.
From: |
Benoît Canet |
Subject: |
Re: [Qemu-devel] [RFC V8 00/13] Quorum block filter. |
Date: |
Mon, 25 Feb 2013 17:10:09 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Hi,
My customer no longer provide me financial support to write/maintain Quorum
because snapshots will be missing for a long time.
As you (Eric, Stefanha and Kevin) helped me to improve Quorum by spending time
doing code reviews I need your answers to the following question.
Do you feel that Quorum would be a valuable asset if it get merged in QEMU.
If so I will iterate on your reviews to get it in a mergeable state.
Best regards
Benoît
> Le Monday 28 Jan 2013 à 18:07:12 (+0100), Benoît Canet a écrit :
> This patchset is rebased on top of "cutils: unsigned int parsing functions"
> by "Eduardo Habkost".
>
> It must be applied on top of "Pave the way for protocol snapshot creation"
>
> 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
>
> v8: merge qiov in QuorumSingleAIOB [Stefan]
>
> v7.5:
> Allow creation of snapshots
> Extract utility functions of quorum_open and quorum_close
> reorder patches so quorum_open and quorum_close are added last
>
> v7:
> parse total and threshold with parse_uint [Eric]
> return proper qerrors in quorum_open [Eric]
> Use sha256 for comparing blocks [Eric]
> Update the rest of the voting function to the new way of doing [Benoît]
>
> V6:
> fix commit message of "quorum: Add quorum_open() and quorum_close()."
> [Eric]
> return error after a vote in quorum_co_flush [Eric]
> Fix bitrot caused by headers and structures renaming [Benoît]
> initialize finished to NULL to prevent crash [Benoît]
> convert internal quorum code to uint64_t instead of int64_t [Benoît]
>
> V5:
>
> Eric Blake: revert back separator to ":"
> rewrite quorum_getlength
>
> Benoît Canet: use memcmp to compare iovec excepted for the blkverify case
> use strstart to parse argument in open
>
> Benoît Canet (13):
> quorum: Create quorum.c, add QuorumSingleAIOCB and QuorumAIOCB.
> quorum: Create BDRVQuorumState and BlkDriver and do init.
> quorum: Add quorum_aio_writev and its dependencies.
> blkverify: Extract qemu_iovec_clone() and qemu_iovec_compare() from
> blkverify.
> quorum: Add quorum_aio_readv.
> quorum: Add quorum mechanism.
> quorum: Add quorum_getlength().
> quorum: Add quorum_invalidate_cache().
> quorum: Add quorum_co_is_allocated.
> quorum: Add quorum_co_flush().
> quorum: Add quorum_snapshot_img_create.
> quorum: Add quorum_snapshot_reopen.
> quorum: Add quorum_open() and quorum_close().
>
> block/Makefile.objs | 1 +
> block/blkverify.c | 108 +-----
> block/quorum.c | 906
> +++++++++++++++++++++++++++++++++++++++++++++++++
> configure | 22 ++
> include/qemu-common.h | 2 +
> util/iov.c | 103 ++++++
> 6 files changed, 1036 insertions(+), 106 deletions(-)
> create mode 100644 block/quorum.c
>
> --
> 1.7.10.4
>