On Sun, Sep 14, 2014 at 09:27:46AM +0100, Doug Winter
wrote:> I am trying to use guestfs to mount, read-only, a VDI filesystem that is
> also open, read-write, by a separate Oracle VirtualBox VM.
>
> Opening the filesystem works fine, however changes made to the
> filesystem in the VirtualBox VM are not reflected in guestfs.
>
> Even unmounting and then mounting the drive again does not show the
> changes made since the first mount.
>
> However, shutdown() and then launch() of the guests does then show the
> changes.
>
> I have tried the drop_caches() call, but this doesn't help either
(which
> is kind of unsurprising if unmounting is insufficient).
When I looked into this before, I suspected the reason was because
qemu is caching (or maybe the host kernel). You could patch the cache
mode (in src/launch-direct.c) so it allows you to use O_DIRECT again
and see if that makes a difference.
In any case yes, unfortunately you need to shutdown and re-launch the
appliance to be sure of seeing changes.
One day in the future qemu will be able to export a consistent
snapshot of a running guest, and move between snapshots. Work is
being done on this upstream.
> Is there any way of causing guestfs to see the changes made to the
> filesystem without going through the slow shutdown/launch process?
See also guestfs-performance(1). If it's taking longer than ~ 5 seconds
then there are ways to fix that.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html