qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] 'qemu-nbd' explicit flush


From: Mark Trumpold
Subject: [Qemu-devel] 'qemu-nbd' explicit flush
Date: Tue, 21 May 2013 20:01:10 +0000

Hello all,

I am using ‘qemu-nbd’ and ‘qemu-img’ from the command line to provide ‘qcow2’ 
loop filesystems.  For performance, I have '--cache=writeback' set for the 
qemu-nbd device.

I am having trouble flushing all caches to disk at will; specifically before 
snapshotting the underlying filesystem that hold the ‘qcow2’ images.

Environment:
    Qemu 1.2.0
    Debian 6.0.5
    Linux kernel 3.3.1 with Qemu patch to enable kernel flushing:
        http://thread.gmane.org/gmane.linux.drivers.nbd.general/1108

Usage example:
    'qemu-nbd --cache=writeback -c /dev/nbd0 /images/my-qcow.img'
    'mount /dev/nbd0 /my-mount-point'

Everything does flush correctly when I first unmount and then disconnect the 
device; however, in my case I am not able to unmount things before snapshotting.

I tried several approaches externally to flush the device.  For example:
    'mount -o remount,ro /dev/nbd0'
    'blockdev --flushbufs /dev/nbd0'

I have been looking at the Qemu source code and in user space 'nbd.c' in 
routine 'nbd_trip' I see the case 'NBD_CMD_FLUSH' which looks to be called from 
the NBD socket interface.  Here I see 'bdrv_co_flush(exp->bs)' which looks 
promising; however, I don't know how to setup the 'bs' pointer for the call.

Ideally, I would like to add a command line parm to 'qemu-nbd.c' to explicitely 
do the flush, but so far no luck.

I've been struggling with this for some time.  Any guidance would be greatly 
appreciated.

Thank you,
Mark Trumpold







reply via email to

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