Kevin Wolf wrote:
Anthony Liguori schrieb:
Kevin Wolf wrote:
Anthony Liguori schrieb:
Kevin Wolf wrote:
Anthony Liguori schrieb:
Yes, if it fails, the EINVAL is no surprise. I meant what code path it
was using. Obviously we missed something in our patch and I'd like to
fix that. Did the error occur on raw images or something like qcow2?
It's a raw image and the calls are being made via
bdrv_aio_read/bdrv_aio_write.  It doesn't occur with a qcow2 but then
cache=off doesn't seem to do what it's supposed to with cache=off (I
believe the underlying backing file is not opened O_DIRECT?).
This is really strange. In raw_aio_read/write there is a check like this:

    if (unlikely(s->aligned_buf != NULL && ((uintptr_t) buf % 512))) {
        // emulate it using raw_pread/write which uses
        // s->aligned_buf for the request then
    }
Something is goofy then.

For qcow2 I think O_DIRECT actually is in effect. Otherwise it would
have worked even without our patch, and it didn't. And indeed, looking
at the code, it passes flags to bdrv_file_open when it opens the image
file.
Something's broken then.  Maybe -snapshot doesn't pick up the
O_DIRECT'ness?  I'll have to check again.  I was definitely seeing page
cache behavior with cache=off.

Right, qemu seems to drop the flags for the backing file when using
BDRV_O_SNAPSHOT (bdrv2_open in block.c opens the file). So O_DIRECT
applies only to new data.

Have you been using -snapshot when you had trouble with the unaligned
buffer, too? I don't think I have tested this one when I made the patch...

Nope.  I was using a raw image.  Actually, an LVM partition.

Regards,

Anthony Liguori

Kevin

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to