From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60185) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZCoxJ-0001gJ-Gr for qemu-devel@nongnu.org; Wed, 08 Jul 2015 09:00:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZCoxF-0002fU-8c for qemu-devel@nongnu.org; Wed, 08 Jul 2015 09:00:05 -0400 Message-ID: <559D1EC7.6080705@redhat.com> Date: Wed, 08 Jul 2015 14:59:51 +0200 From: Laurent Vivier MIME-Version: 1.0 References: <55952D97.7040009@redhat.com> <559540F6.9090800@redhat.com> <55954384.9010906@redhat.com> <559544C4.4050809@redhat.com> <55954836.3060700@redhat.com> <20150708103125.GE4117@noname.redhat.com> <559CFFDD.3000704@redhat.com> <20150708110140.GF4117@noname.redhat.com> In-Reply-To: <20150708110140.GF4117@noname.redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] raw-posix.c: remove raw device access for cdrom List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: Peter Maydell , Qemu-block , Stefan Hajnoczi , qemu-devel qemu-devel , Programmingkid , Paolo Bonzini , John Snow On 08/07/2015 13:01, Kevin Wolf wrote: > Am 08.07.2015 um 12:47 hat Laurent Vivier geschrieben: >> >> >> On 08/07/2015 12:31, Kevin Wolf wrote: >>> Am 02.07.2015 um 16:18 hat Laurent Vivier geschrieben: >>>> >>>> >>>> On 02/07/2015 16:03, Paolo Bonzini wrote: >>>>> >>>>> >>>>> On 02/07/2015 15:58, Laurent Vivier wrote: >>>>>> Since any /dev entry can be treated as a raw disk image, it is worth >>>>>> noting which devices can be accessed when and how. /dev/rdisk nodes are >>>>>> character-special devices, but are "raw" in the BSD sense and force >>>>>> block-aligned I/O. They are closer to the physical disk than the buffer >>>>>> cache. /dev/disk nodes, on the other hand, are buffered block-special >>>>>> devices and are used primarily by the kernel's filesystem code. >>>>> >>>>> So the right thing to do would not be just to set need_alignment, but to >>>>> probe it like we do on Linux for BDRV_O_NO_CACHE. >>>>> >>>>> I'm okay with doing the simple thing, but it needs a comment for non-BSDers. >>>> >>>> So, what we have to do, in our case, for MacOS X cdrom, is something like: >>>> >>>> ... GetBSDPath ... >>>> ... >>>> if (flags & BDRV_O_NOCACHE) { >>>> strcat(bsdPath, "r"); >>>> } >>>> ... >>> >>> I would avoid such magic. What we could do is rejecting /dev/rdisk nodes >>> without BDRV_O_NOCACHE. >> >> It's not how it works... >> >> Look in hdev_open(). >> >> If user provides /dev/cdrom on the command line, in the case of MacOS X, >> QEMU searches for a cdrom drive in the system and set filename to >> /dev/rdiskX according to the result. > > Oh, we're already playing such games... I guess you're right then. > > It even seems to be not only for '/dev/cdrom', but for everything > starting with this string. Does anyone know what's the reason for that? At least 10 years old reason: commit 3b0d4f61c917c4612b561d75b33a11f4da00738b Author: bellard Date: Sun Oct 30 18:30:10 2005 +0000 OS X: support for the built in CD-ROM drive (Mike Kronenberg) > > Also, I guess before doing strcat() on bsdPath, we should check the > buffer length... > >> Perhaps this part should be removed. >> >> But if we just want to correct the bug, we must not set filename to >> /dev/rdiskX if NOCACHE is not set but to /dev/diskX >> >> It's the aim of this change. > > Yes, that looks right. > > Kevin >