From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:36439) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SwsSj-0006GT-BI for qemu-devel@nongnu.org; Thu, 02 Aug 2012 06:17:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SwsSi-0003xn-Bh for qemu-devel@nongnu.org; Thu, 02 Aug 2012 06:17:01 -0400 Received: from mail-wi0-f181.google.com ([209.85.212.181]:33626) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SwsSi-0003xg-4c for qemu-devel@nongnu.org; Thu, 02 Aug 2012 06:17:00 -0400 Received: by wibhm2 with SMTP id hm2so3769121wib.10 for ; Thu, 02 Aug 2012 03:16:59 -0700 (PDT) From: "=?UTF-8?q?Beno=C3=AEt=20Canet?=" Date: Thu, 2 Aug 2012 12:16:32 +0200 Message-Id: <1343902604-13981-1-git-send-email-benoit@irqsave.net> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Qemu-devel] [RFC 00/12] Qorum disk image corruption resiliency List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, pbonzini@redhat.com, stefanha@linux.vnet.ibm.com, =?UTF-8?q?Beno=C3=AEt=20Canet?= This patchset create a block driver implementing a qorum 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 majoritary qiov version. It then return this majoritary version to the upper layers. When three differents versions of the data are returned by the lower layer the qorum 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=qorum:image1.raw:image2.raw:image3.raw,if=virtio,cache=none BenoƮt Canet (12): qorum: Add GPL v2+ header file. qorum: Add QorumSingleAIOCB and QorumAIOCB. qorum: Create BDRVQorumState and BlkDriver and do init. qorum: Add qorum_open(). qorum: Add qorum_close(). qorum: Add qorum_getlength(). qorum: Add qorum_aio_writev and its dependencies. blkverify: Make blkverify_iovec_clone() and blkverify_iovec_compare() public qorum: Add qorum_co_flush(). qorum: Add qorum_aio_readv. qorum: Add qorum mechanism. qorum: build feature into QEMU. block/Makefile.objs | 1 + block/blkverify.c | 8 +- block/qorum.c | 393 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 400 insertions(+), 2 deletions(-) create mode 100644 block/qorum.c -- 1.7.9.5