From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JtQF2-0002fd-Ij for qemu-devel@nongnu.org; Tue, 06 May 2008 12:42:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JtQF0-0002f6-UW for qemu-devel@nongnu.org; Tue, 06 May 2008 12:42:12 -0400 Received: from [199.232.76.173] (port=54940 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JtQF0-0002ek-OW for qemu-devel@nongnu.org; Tue, 06 May 2008 12:42:10 -0400 Received: from gv-out-0910.google.com ([216.239.58.185]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JtQF0-0003fO-Bv for qemu-devel@nongnu.org; Tue, 06 May 2008 12:42:10 -0400 Received: by gv-out-0910.google.com with SMTP id n8so205387gve.36 for ; Tue, 06 May 2008 09:42:10 -0700 (PDT) Message-ID: Date: Tue, 6 May 2008 19:42:09 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] [PATCH] Align file accesses with cache=off (O_DIRECT) In-Reply-To: <48201A71.3040405@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <4807514B.9040607@suse.de> <200804302305.42741@kevin-wolf.de> <200805011955.00265@kevin-wolf.de> <48201A71.3040405@suse.de> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: Laurent Vivier , qemu-devel@nongnu.org On 5/6/08, Kevin Wolf wrote: > Kevin Wolf schrieb: > > > > Am Donnerstag, 1. Mai 2008 16:35:51 schrieb Blue Swirl: > > > > > On 5/1/08, Kevin Wolf wrote: > > > > > > > Am Mittwoch, 30. April 2008 16:30:27 schrieb Blue Swirl: > > > > > > > > > Maybe the alignment could be handled like AIO and synchronous IO > > > > > > > > > > > > > > > emulation layers are added in bdrv_register, but at open stage? > > > > > > > > You mean to preserve the original pread if the file is opened without > > > > O_DIRECT and replace it by the emulation function only if O_DIRECT is > > > > really used? > > > > > > > Right. > > > > > > Maybe it's slightly faster that way and it would be closer to how > > > other block emulations are handled. It's just an idea. > > > > > > > Maybe I'm missing something but AFAIK this pread pointer exists once for > each block driver, i.e. every raw image uses the original pread or every raw > image uses the emulating one. The difference between the O_DIRECT case and > the AIO/sync emulation is that AIO/sync is the same for all devices of one > driver while O_DIRECT can differ between images of the same driver. > > > > So you would need to have one common pread which in turn calls a function > pointer stored in the BlockDriverState. I doubt that this is much cheaper > than an if in pread. And it wouldn't get too close to other emulations > anyway because of the driver/device difference. > > > > Should I change the patch now (even if I think it doesn't help anything) or > will you apply the patch as it is? It is quite frustrating to get no answer > at all. Well, the patch looks OK. But I try to test the patches before I commit and for this I don't know how. Could you give some example test cases?