qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Benoît Canet" <benoit.canet@gmail.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, stefanha@linux.vnet.ibm.com,
	blauwirbel@gmail.com, anthony@codemonkey.ws, pbonzini@redhat.com,
	eblake@redhat.com, afaerber@suse.de,
	"Benoît Canet" <benoit@irqsave.net>
Subject: [Qemu-devel] [RFC V3 0/9] Quorum disk image corruption resiliency
Date: Tue, 14 Aug 2012 16:14:02 +0200	[thread overview]
Message-ID: <1344953651-16622-1-git-send-email-benoit@irqsave.net> (raw)

This patchset create a block driver implementing a quorum using m qemu disk
images. Writes are mirrored on the m files.
For the reading part the m files are read at the same time and a vote is
done to determine if a qiov version is present n or more times. It then return
this majority version to the upper layers.
When i < n 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:n/m:image_1.raw:...:image_m.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()

Benoît Canet (9):
  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_getlength().
  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.

 block/Makefile.objs |    1 +
 block/blkverify.c   |  108 +---------
 block/quorum.c      |  559 +++++++++++++++++++++++++++++++++++++++++++++++++++
 cutils.c            |  103 ++++++++++
 qemu-common.h       |    2 +
 5 files changed, 667 insertions(+), 106 deletions(-)
 create mode 100644 block/quorum.c

-- 
1.7.9.5

             reply	other threads:[~2012-08-14 14:14 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-14 14:14 Benoît Canet [this message]
2012-08-14 14:14 ` [Qemu-devel] [RFC V3 1/9] quorum: Create quorum.c, add QuorumSingleAIOCB and QuorumAIOCB Benoît Canet
2012-08-14 14:14 ` [Qemu-devel] [RFC V3 2/9] quorum: Create BDRVQuorumState and BlkDriver and do init Benoît Canet
2012-08-14 14:14 ` [Qemu-devel] [RFC V3 3/9] quorum: Add quorum_open() and quorum_close() Benoît Canet
2012-08-14 14:45   ` Eric Blake
2012-08-14 14:14 ` [Qemu-devel] [RFC V3 4/9] quorum: Add quorum_getlength() Benoît Canet
2012-08-14 16:08   ` Eric Blake
2012-08-16 13:18     ` Benoît Canet
2012-08-14 14:14 ` [Qemu-devel] [RFC V3 5/9] quorum: Add quorum_aio_writev and its dependencies Benoît Canet
2012-08-14 14:14 ` [Qemu-devel] [RFC V3 6/9] blkverify: Extract qemu_iovec_clone() and qemu_iovec_compare() from blkverify Benoît Canet
2012-08-14 14:14 ` [Qemu-devel] [RFC V3 7/9] quorum: Add quorum_co_flush() Benoît Canet
2012-08-14 18:52   ` Blue Swirl
2012-08-14 14:14 ` [Qemu-devel] [RFC V3 8/9] quorum: Add quorum_aio_readv Benoît Canet
2012-08-15 10:53   ` Stefan Hajnoczi
2012-08-14 14:14 ` [Qemu-devel] [RFC V3 9/9] quorum: Add quorum mechanism Benoît Canet
2012-08-15 10:51   ` Stefan Hajnoczi
2012-08-14 18:47 ` [Qemu-devel] [RFC V3 0/9] Quorum disk image corruption resiliency Blue Swirl
2012-08-15 13:12 ` Stefan Hajnoczi
2012-08-20 10:12 ` Benoît Canet
2012-08-20 11:23   ` Stefan Hajnoczi
2012-08-20 11:24     ` Stefan Hajnoczi
2012-08-20 11:42       ` Benoît Canet
2012-08-20 12:56         ` Stefan Hajnoczi
2012-08-20 14:03           ` Benoît Canet
2012-08-20 15:28             ` Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1344953651-16622-1-git-send-email-benoit@irqsave.net \
    --to=benoit.canet@gmail.com \
    --cc=afaerber@suse.de \
    --cc=anthony@codemonkey.ws \
    --cc=benoit@irqsave.net \
    --cc=blauwirbel@gmail.com \
    --cc=eblake@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).