qemu-devel
[Top][All Lists]
Advanced

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

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


From: Liu Yuan
Subject: [Qemu-devel] bdrv_co_flush_to_disk() don't flush as expected
Date: Fri, 18 Jan 2013 23:43:14 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130106 Thunderbird/17.0.2

Hi List,
   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?

Thanks,
Yuan



reply via email to

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