From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34846) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VExa5-0007po-Iv for qemu-devel@nongnu.org; Thu, 29 Aug 2013 04:27:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VExZz-0006Bw-JO for qemu-devel@nongnu.org; Thu, 29 Aug 2013 04:27:53 -0400 Received: from mx1.redhat.com ([209.132.183.28]:6373) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VExZz-0006Bs-A8 for qemu-devel@nongnu.org; Thu, 29 Aug 2013 04:27:47 -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 r7T8RkKC012525 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 29 Aug 2013 04:27:46 -0400 Message-ID: <521F0600.9050701@redhat.com> Date: Thu, 29 Aug 2013 10:27:44 +0200 From: Max Reitz MIME-Version: 1.0 References: <1377701706-965-1-git-send-email-mreitz@redhat.com> <1377701706-965-2-git-send-email-mreitz@redhat.com> <20130829082303.GC2961@dhcp-200-207.str.redhat.com> In-Reply-To: <20130829082303.GC2961@dhcp-200-207.str.redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v2 1/5] qcow2: Add corrupt bit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: qemu-devel@nongnu.org, Stefan Hajnoczi Am 29.08.2013 10:23, schrieb Kevin Wolf: > Am 28.08.2013 um 16:55 hat Max Reitz geschrieben: >> This adds an incompatible bit indicating corruption to qcow2. Any imag= e >> with this bit set may not be written to unless for repairing (and >> subsequently clearing the bit if the repair has been successful). >> >> Signed-off-by: Max Reitz >> --- >> block/qcow2.c | 45 ++++++++++++++++++++++++++++++++++++= +++++++++ >> block/qcow2.h | 7 ++++++- >> docs/specs/qcow2.txt | 7 ++++++- >> tests/qemu-iotests/031.out | 12 ++++++------ >> tests/qemu-iotests/036.out | 2 +- >> 5 files changed, 64 insertions(+), 9 deletions(-) >> @@ -402,6 +433,15 @@ static int qcow2_open(BlockDriverState *bs, QDict= *options, int flags) >> goto fail; >> } >> =20 >> + if (s->incompatible_features & QCOW2_INCOMPAT_CORRUPT) { >> + /* Corrupt images may not be written to unless they are being= repaired >> + */ >> + if ((flags & BDRV_O_RDWR) && !(flags & BDRV_O_CHECK)) { >> + ret =3D -EACCES; > Perhaps a (q)error_report() call would be appropriate so that the user > isn't confused with only the "Permission denied" message Seems reasonable. > (should it be > EPERM rather than EACCES, too? Or maybe EROFS?) I chose the value based on the following: $ touch foo $ chmod -w foo $ echo 'bar' > foo zsh: permission denied: foo (which is EACCES) EROFS sounds nice, but I wouldn't go for it since it's the image that's=20 read-only and not the underlying FS (which I think EROFS is for=85?) Max