From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:46562) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T3OyU-0008R7-Hp for qemu-devel@nongnu.org; Mon, 20 Aug 2012 06:12:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1T3OyT-0001vl-Gk for qemu-devel@nongnu.org; Mon, 20 Aug 2012 06:12:46 -0400 Received: from paradis.irqsave.net ([109.190.18.76]:55298) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1T3OyT-0001v0-1Y for qemu-devel@nongnu.org; Mon, 20 Aug 2012 06:12:45 -0400 Date: Mon, 20 Aug 2012 12:12:29 +0200 From: =?iso-8859-1?Q?Beno=EEt?= Canet Message-ID: <20120820101229.GA2218@irqsave.net> References: <1344953651-16622-1-git-send-email-benoit@irqsave.net> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline In-Reply-To: <1344953651-16622-1-git-send-email-benoit@irqsave.net> Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [RFC V3 0/9] Quorum disk image corruption resiliency List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?iso-8859-1?Q?Beno=EEt?= Canet Cc: kwolf@redhat.com, stefanha@linux.vnet.ibm.com, qemu-devel@nongnu.org, blauwirbel@gmail.com, anthony@codemonkey.ws, pbonzini@redhat.com, eblake@redhat.com, afaerber@suse.de Le Tuesday 14 Aug 2012 =E0 16:14:02 (+0200), Beno=EEt Canet a =E9crit : > 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 i= s > 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. >=20 > 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. >=20 > Main use of this feature will be people using NFS appliances which can = be > subjected to bitflip errors. >=20 > This patchset can be used to replace blkverify and the out of tree blkm= irror. >=20 > usage: -drive file=3Dquorum:n/m:image_1.raw:...:image_m.raw,if=3Dvirtio= ,cache=3Dnone stefanha: I am wondering what would be needed to do in order to have COR = and streaming working with quorum.c ? Same question for live migration. Beno=EEt >=20 > in v2: >=20 > eblake: fix typos > squash two first commits >=20 > af=E4rber: Modify the Makefile on first commit >=20 > bcanet: move function prototype of quorum.c one patch down >=20 > in v3: >=20 > Blue Swirl: change char * to uint8_t * in QuorumSingleAIOCB >=20 > Eric Blake: Add escaping of the : separator > Allow to specify the n/m ratio parameters of the Quorum >=20 > Stefan Hajnoczi: Squash quorum_close and quorum_open patch to avoid lea= k > Add missing bdrv_delete() in quorum_close > simpler quorum_getlength > make the quorum_check_ret threshold a user setting (bi= nd it to n) > move blkverify_iovec_clone() and blkverify_iovec_compa= re() to cutils.c > free unconditionally qemu_blockalign() with qemu_vfree= () > turn assignement into assert in quorum_copy_qiov() >=20 > Beno=EEt 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. >=20 > 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 >=20 > --=20 > 1.7.9.5 >=20