qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] bdrv_co_flush_to_disk() don't flush as expected


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] bdrv_co_flush_to_disk() don't flush as expected
Date: Fri, 18 Jan 2013 16:56:05 +0100

On Fri, Jan 18, 2013 at 4:43 PM, Liu Yuan <address@hidden> wrote:
>    Recently I found bdrv_co_flush_to_disk() doesn't work as expected. As
> it is advertised
>
>     /*
>      * Flushes all data that was already written to the OS all the way
> down to
>      * the disk (for example raw-posix calls fsync()).
>      */
>     int coroutine_fn (*bdrv_co_flush_to_disk)(BlockDriverState *bs);
>
> The fsync(2) or similar flush requests in the guest OS will trigger this
> handler of the attached disk.
>
> But I noticed that this handler isn't called at all when guest is
> running if I attach another disk as 'cache=writeback', for e.g
>
>  # start up the guest
>  $ qemu-system-x86_64 --enable-kvm -drive
> file=~/images/test1,if=virtio,cache=writeback -smp 2 -cpu host -m 1024
> -drive file=sheepdog:test,if=virtio,cache=writeback
>  # write to the /dev/vdb of the guest
>  # sudo dd if=/dev/urandom of=/dev/vdb bs=4M count=1 oflag=direct,sync
>
> This doesn't trigger flush for vdb device. I also write a small program
> to call fsync(2) to the device, no flush neither.
>
> Only the poweroff of the guest will trigger the flush request for vdb.
> So is this expected behavior and I am missing something?

How are you checking that sd_co_flush_to_disk() is called?  Please
post the diff.

Stefan



reply via email to

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