[Qemu-devel] Re: qemu svn r5281 on FreeBSD - slow usb,
vmwarevga, screen updates... (now updated to r5313)
Juergen Lock
nox at jelal.kn-bremen.de
Tue Sep 30 22:25:36 UTC 2008
On Tue, Sep 30, 2008 at 09:51:33AM -0500, Anthony Liguori wrote:
> Juergen Lock wrote:
>> In article <48DE5256.5000101 at codemonkey.ws> you write:
>>
>>> [...]
>>>
>>
>>
>>>>> The one thing that really tripped me up with the whole aio kld-module
>>>>> thing. Perhaps we should detect the presence of the module at run time
>>>>> and disable aio? I assume kldload can only be run as root?
>>>>>
>>>> Yes. Atm the ports print a warning when aio is not loaded:
>>>>
>>> Yeah, I don't think this is enough. I'd rather see AIO be disabled when
>>> modfind("aio") is not available (printing a warning along with that would
>>> be fine). A non-privileged user cannot load the aio module so it's not
>>> very useful to tell them to load it.
>>>
>>
>> OK so how about the following? (only tested with a raw image, but if
>> the way its disabled for OpenBSD works for all of them this should as well.)
>>
>> Oh and am I right qemu-img doesn't use aio? If it actually does we may
>> want to add the same check there instead of just disabling it. (I kept it
>> enabled for qemu-nbd since thats not built on FreeBSD anyway.)
>>
>
> Disabling aio for everyone is not the right thing if posix-aio is broken.
>
Well, I went after what is done for the OpenBSD case (CONFIG_AIO not set),
i.e. tell bdrv_register() to set bdrv_aio_read & frieds to bdrv_aio_read_em
etc for bdrv_raw if aio is not loaded. I found one bug tho, the same
should be done for bdrv_host_device, i.e. in block.c
bdrv_register(&bdrv_host_device, 0);
should be
bdrv_register(&bdrv_host_device, emulate_aio);
too. The 0 for the others there mean don't emulate i.e. keep aio enabled...
Or are you talking about qemu-img? If that would in fact benefit from
using aio like this too we could just add the same test as in vl.c.
(Or we could move the test to bdrv_init(), I just didn't want to print
the warning from in there.)
> What would be better is in block-raw-posix.c, to have a one type check of
> modfind() (if we're FreeBSD), and if it fails, set a flag that forces the
> aio routines to call bdrv_aio_{read,write}_em.
>
You mean runtime checks every time a raw aio fn is called (even if just
a flag?) That's what I was trying to avoid... :)
Regards,
Juergen
More information about the freebsd-emulation
mailing list