[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
- [Qemu-devel] bdrv_co_flush_to_disk() don't flush as expected,
Liu Yuan <=