From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42122) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VFNue-0007hj-1X for qemu-devel@nongnu.org; Fri, 30 Aug 2013 08:34:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VFNuX-0001SC-Hw for qemu-devel@nongnu.org; Fri, 30 Aug 2013 08:34:51 -0400 Received: from mx1.redhat.com ([209.132.183.28]:13837) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VFNuX-0001Rp-A6 for qemu-devel@nongnu.org; Fri, 30 Aug 2013 08:34:45 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r7UCYif0031744 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 30 Aug 2013 08:34:44 -0400 From: Max Reitz Date: Fri, 30 Aug 2013 14:34:23 +0200 Message-Id: <1377866071-27611-1-git-send-email-mreitz@redhat.com> Subject: [Qemu-devel] [PATCH v4 0/8] Add metadata overlap checks List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Stefan Hajnoczi , Max Reitz If a qcow2 image file becomes corrupted, any write may inadvertently overwrite important metadata structures such as the L1 table. This series adds functionality for detecting, preventing and (to some extent) repairing such collisions. v4: - fixed handling of preallocated zero clusters in patch 4 - moved OFLAG_COPIED checks into a separate function (this affects patches 4 and 5); functionality remains unchanged - patches 1, 2, 3, 6, 7 and 8 remain unmodified (except for line numbers in block/qcow2-refcount.c) v3: - split PATCH 4/5 into four distinct patches (4/8, 5/8, 6/8 and 7/8, respectively) - directly generate a JSON message when marking the image corrupt - other (minor) fixes according to Kevin's comments v2: - Generally implemented Kevin's comments, especially: - new QMP event QEVENT_BLOCK_IMAGE_CORRUPTED - removed BDRV_O_REPAIR in favor of BDRV_O_CHECK | BDRV_O_RDWR - always check full clusters for overlaps - removed qcow2_check_allocations in favor of some qcow2_check_refcounts extensions that will hopefully include all that functionality Max Reitz (8): qcow2: Add corrupt bit qcow2: Metadata overlap checks qcow2: Employ metadata overlap checks qcow2-refcount: Move OFLAG_COPIED checks qcow2-refcount: Repair OFLAG_COPIED errors qcow2-refcount: Repair shared refcount blocks qcow2_check: Mark image consistent qemu-iotests: Overlapping cluster allocations block/qcow2-cache.c | 17 ++ block/qcow2-cluster.c | 25 ++- block/qcow2-refcount.c | 481 +++++++++++++++++++++++++++++++++++++++++---- block/qcow2-snapshot.c | 22 +++ block/qcow2.c | 79 +++++++- block/qcow2.h | 47 ++++- docs/specs/qcow2.txt | 7 +- include/block/block.h | 1 + include/monitor/monitor.h | 1 + monitor.c | 1 + tests/qemu-iotests/031.out | 12 +- tests/qemu-iotests/036.out | 2 +- tests/qemu-iotests/060 | 111 +++++++++++ tests/qemu-iotests/060.out | 44 +++++ tests/qemu-iotests/group | 1 + 15 files changed, 804 insertions(+), 47 deletions(-) create mode 100755 tests/qemu-iotests/060 create mode 100644 tests/qemu-iotests/060.out -- 1.8.3.1