From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1GFD5b-0005Wj-LG for qemu-devel@nongnu.org; Mon, 21 Aug 2006 12:57:27 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1GFD5Z-0005TF-UD for qemu-devel@nongnu.org; Mon, 21 Aug 2006 12:57:27 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1GFD5Z-0005Sw-PF for qemu-devel@nongnu.org; Mon, 21 Aug 2006 12:57:25 -0400 Received: from [212.227.126.187] (helo=moutng.kundenserver.de) by monty-python.gnu.org with esmtp (Exim 4.52) id 1GFDCz-0003um-O5 for qemu-devel@nongnu.org; Mon, 21 Aug 2006 13:05:06 -0400 Received: from localhost ([127.0.0.1]) by localhost.localdomain with esmtp (Exim 4.62) (envelope-from ) id 1GFD5W-0001zS-Py for qemu-devel@nongnu.org; Mon, 21 Aug 2006 18:57:22 +0200 Message-ID: <44E9E5F2.7030008@mail.berlios.de> Date: Mon, 21 Aug 2006 18:57:22 +0200 From: Stefan Weil MIME-Version: 1.0 Subject: [Qemu-devel][Patch] Fix QEMU failure for disk image on readonly filesystem Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Hello, qemu fails when the disk image file is writable but on a readonly filesystem (so it is not really writable). The patch below fixes this. It also declares a local function "static" (maybe this part of the patch is a matter of taste). Regards, Stefan --- block.c 19 Aug 2006 11:45:59 -0000 1.34 +++ block.c 21 Aug 2006 16:46:21 -0000 @@ -110,7 +110,7 @@ } -void bdrv_register(BlockDriver *bdrv) +static void bdrv_register(BlockDriver *bdrv) { if (!bdrv->bdrv_aio_read) { /* add AIO emulation layer */ @@ -359,7 +359,7 @@ else open_flags = flags & ~(BDRV_O_FILE | BDRV_O_SNAPSHOT); ret = drv->bdrv_open(bs, filename, open_flags); - if (ret == -EACCES && !(flags & BDRV_O_FILE)) { + if ((ret == -EACCES || ret == -EROFS) && !(flags & BDRV_O_FILE)) { ret = drv->bdrv_open(bs, filename, BDRV_O_RDONLY); bs->read_only = 1; }