From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MyNJ5-00051B-SJ for qemu-devel@nongnu.org; Thu, 15 Oct 2009 06:11:39 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MyNJ1-0004yk-4M for qemu-devel@nongnu.org; Thu, 15 Oct 2009 06:11:39 -0400 Received: from [199.232.76.173] (port=42029 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MyNJ0-0004yd-Ua for qemu-devel@nongnu.org; Thu, 15 Oct 2009 06:11:35 -0400 Received: from mx1.redhat.com ([209.132.183.28]:8402) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MyNJ0-0000mo-Jf for qemu-devel@nongnu.org; Thu, 15 Oct 2009 06:11:34 -0400 Received: from int-mx04.intmail.prod.int.phx2.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.17]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n9FABXZ6010461 for ; Thu, 15 Oct 2009 06:11:33 -0400 Date: Thu, 15 Oct 2009 12:11:31 +0200 From: Gleb Natapov Subject: Re: [Qemu-devel] [PATCH] Pass the drive's readonly attribute to the guest OS Message-ID: <20091015101131.GH30889@redhat.com> References: <4AD5F3BD.2040402@redhat.com> <4AD5FEF2.2000308@redhat.com> <4AD6ED3B.1030902@redhat.com> <20091015094331.GE30889@redhat.com> <4AD6F06F.7060209@redhat.com> <20091015095426.GF30889@redhat.com> <4AD6F188.2070103@redhat.com> <20091015100120.GG30889@redhat.com> <4AD6F3F5.8000803@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4AD6F3F5.8000803@redhat.com> List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: Naphtali Sprei , qemu-devel@nongnu.org On Thu, Oct 15, 2009 at 12:05:41PM +0200, Kevin Wolf wrote: > >>>>>> If the right response to a write on a read-only device is defined in the > >>>>>> specification (and it most probably is), we should still give the right > >>>>>> response, even though the OS is doing something wrong. > >>>>>> > >>>>> And since our response to write error may be pausing a VM we shouldn't > >>>>> allow this to be triggered by a guest OS. > >>>> > >>>> I thought we only pause the VM if we get an host IO error? But if you do > >>>> want to stop it for all errors, you shouldn't start suppressing errors > >>>> so that it doesn't stop. > >>>> > >>> We pause only on host IO errors, but if we open underlying file as > >>> read only (do we?) and try to write into it we will get an IO error > >>> in the host. > >> > >> No, we'll return an error before a write request to the host is even issued. > >> > > Who is "we"? If "we" == "bdrv_write()/dma_bdrv_write()" then it's all the same. > > Upper layers don't actually care why block driver failed. > > Right, "we" is the qemu block layer. If the devices don't use the error > code returned, they better should be fixed, I think? > Fixed in what way? There is an option to pause VM on any write error. If block layer returns write error for whatever reason VM will be paused. If scsi/ide/virtio knows that the media is read only it shouldn't issue writes to block layer, but handle it like real HW would. -- Gleb.