qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] Align file accesses with cache=off (O_DIRECT)


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH] Align file accesses with cache=off (O_DIRECT)
Date: Thu, 1 May 2008 19:55:00 +0200
User-agent: KMail/1.9.6 (enterprise 20070904.708012)

Am Donnerstag, 1. Mai 2008 16:35:51 schrieb Blue Swirl:
> On 5/1/08, Kevin Wolf <address@hidden> 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.

Kevin




reply via email to

[Prev in Thread] Current Thread [Next in Thread]