From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=37255 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1ObEvO-0005ZY-Hp for qemu-devel@nongnu.org; Tue, 20 Jul 2010 11:40:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1ObEvM-0001RC-K1 for qemu-devel@nongnu.org; Tue, 20 Jul 2010 11:40:06 -0400 Received: from mx1.redhat.com ([209.132.183.28]:5747) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ObEvM-0001Qx-DQ for qemu-devel@nongnu.org; Tue, 20 Jul 2010 11:40:04 -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 o6KFe3bj016439 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 20 Jul 2010 11:40:03 -0400 Message-ID: <4C45C350.9000707@redhat.com> Date: Tue, 20 Jul 2010 17:40:00 +0200 From: Kevin Wolf MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] Disable O_DIRECT for physical CDROM/DVD drives References: <1279639056-20465-1-git-send-email-Jes.Sorensen@redhat.com> In-Reply-To: <1279639056-20465-1-git-send-email-Jes.Sorensen@redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jes.Sorensen@redhat.com Cc: qemu-devel@nongnu.org Am 20.07.2010 17:17, schrieb Jes.Sorensen@redhat.com: > From: Jes Sorensen > > O_DIRECT (cache=none) requires sector alignment, however the physical > sector size of CDROM/DVD drives is 2048, as opposed to most disk > devices which use 512. QEMU is hard coding 512 all over the place, so > allowing O_DIRECT for CDROM/DVD devices does not work. > > Signed-off-by: Jes Sorensen > --- > block/raw-posix.c | 5 +++++ > 1 files changed, 5 insertions(+), 0 deletions(-) > > diff --git a/block/raw-posix.c b/block/raw-posix.c > index 291699f..0ea79b6 100644 > --- a/block/raw-posix.c > +++ b/block/raw-posix.c > @@ -1139,6 +1139,11 @@ static int cdrom_open(BlockDriverState *bs, const char *filename, int flags) > BDRVRawState *s = bs->opaque; > > s->type = FTYPE_CD; > + if (flags & BDRV_O_NOCACHE) { > + fprintf(stderr, "Disabling unsupported O_DIRECT (cache=none) for " > + "CDROM/DVD device (%s)\n", filename); > + flags &= ~BDRV_O_NOCACHE; > + } Good point. Just one detail: We should probably change bs->open_flags, too, to keep things consistent. Kevin