qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 00/10] Quorum disk image corruption resiliency
@ 2012-08-07 13:44 Benoît Canet
  2012-08-07 13:44 ` [Qemu-devel] [RFC V2 01/10] quorum: Create quorum.c, add QuorumSingleAIOCB and QuorumAIOCB Benoît Canet
                   ` (10 more replies)
  0 siblings, 11 replies; 33+ messages in thread
From: Benoît Canet @ 2012-08-07 13:44 UTC (permalink / raw)
  To: qemu-devel
  Cc: kwolf, stefanha, blauwirbel, anthony, pbonzini, eblake, afaerber,
	Benoît Canet

This patchset create a block driver implementing a quorum using three qemu disk
images. Writes are mirrored on the three files.
For the reading part the three files are read at the same time and a vote is
done to determine which is the majority qiov version. It then return this
majority version to the upper layers.
When three differents 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.

usage: -drive file=quorum:image1.raw:image2.raw:image3.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

open question:
    Would the ability to do quorum on 2n+1 images like Blue Swirl suggested be
    popular ?

Benoît Canet (10):
  quorum: Create quorum.c, add QuorumSingleAIOCB and QuorumAIOCB.
  quorum: Create BDRVQuorumState and BlkDriver and do init.
  quorum: Add quorum_open().
  quorum: Add quorum_close().
  quorum: Add quorum_getlength().
  quorum: Add quorum_aio_writev and its dependencies.
  blkverify: Make blkverify_iovec_clone() and blkverify_iovec_compare()
    public
  quorum: Add quorum_co_flush().
  quorum: Add quorum_aio_readv.
  quorum: Add quorum mechanism.

 block/Makefile.objs |    1 +
 block/blkverify.c   |    8 +-
 block/quorum.c      |  390 +++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 397 insertions(+), 2 deletions(-)
 create mode 100644 block/quorum.c

-- 
1.7.9.5

^ permalink raw reply	[flat|nested] 33+ messages in thread

end of thread, other threads:[~2012-08-15 10:49 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-08-07 13:44 [Qemu-devel] [PATCH 00/10] Quorum disk image corruption resiliency Benoît Canet
2012-08-07 13:44 ` [Qemu-devel] [RFC V2 01/10] quorum: Create quorum.c, add QuorumSingleAIOCB and QuorumAIOCB Benoît Canet
2012-08-07 20:24   ` Blue Swirl
2012-08-07 13:44 ` [Qemu-devel] [RFC V2 02/10] quorum: Create BDRVQuorumState and BlkDriver and do init Benoît Canet
2012-08-07 13:44 ` [Qemu-devel] [RFC V2 03/10] quorum: Add quorum_open() Benoît Canet
2012-08-07 20:30   ` Blue Swirl
2012-08-07 20:40     ` Eric Blake
2012-08-10 17:48     ` Benoît Canet
2012-08-13  7:41       ` Kevin Wolf
2012-08-14 16:56         ` Benoît Canet
2012-08-15 10:40           ` Kevin Wolf
2012-08-08 15:04   ` Stefan Hajnoczi
2012-08-07 13:44 ` [Qemu-devel] [RFC V2 04/10] quorum: Add quorum_close() Benoît Canet
2012-08-07 20:30   ` Blue Swirl
2012-08-08 15:06     ` Stefan Hajnoczi
2012-08-07 13:44 ` [Qemu-devel] [RFC V2 05/10] quorum: Add quorum_getlength() Benoît Canet
2012-08-08 15:30   ` Stefan Hajnoczi
2012-08-09  9:07     ` Benoît Canet
2012-08-09  9:14       ` Stefan Hajnoczi
2012-08-07 13:44 ` [Qemu-devel] [RFC V2 06/10] quorum: Add quorum_aio_writev and its dependencies Benoît Canet
2012-08-08 15:37   ` Stefan Hajnoczi
2012-08-09  9:24     ` Benoît Canet
2012-08-09  9:35       ` Stefan Hajnoczi
2012-08-07 13:44 ` [Qemu-devel] [RFC V2 07/10] blkverify: Make blkverify_iovec_clone() and blkverify_iovec_compare() public Benoît Canet
2012-08-08 15:38   ` Stefan Hajnoczi
2012-08-07 13:44 ` [Qemu-devel] [RFC V2 08/10] quorum: Add quorum_co_flush() Benoît Canet
2012-08-07 13:44 ` [Qemu-devel] [RFC V2 09/10] quorum: Add quorum_aio_readv Benoît Canet
2012-08-08 15:44   ` Stefan Hajnoczi
2012-08-08 15:46     ` Stefan Hajnoczi
2012-08-07 13:44 ` [Qemu-devel] [RFC V2 10/10] quorum: Add quorum mechanism Benoît Canet
2012-08-08 15:54   ` Stefan Hajnoczi
2012-08-08 14:55 ` [Qemu-devel] [PATCH 00/10] Quorum disk image corruption resiliency Stefan Hajnoczi
2012-08-10 17:45   ` Benoît Canet

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).