Some background for my question: I've been trying to install
and then update Windows Vista using kvm. Everything works great
until I use 'qemu-img commit' to apply all the Windows Updates
to my original base install of Vista.
After doing the qemu-img commit step, the backing file is now
corrupt, 100% reproducibly. I don't have the same problem with
Windows XP, however, and I wondered if the problem is caused by
the sheer size of the commit that Vista requires.
When I install XP, then windows-update, and then qemu-img commit
the updates, I'm committing about 1GB of updates to a 3GB backing
file.
When I install Vista and then later commit the Vista updates, I'm
committing a 3GB file to a 6GB backing file, and that's when the
corruption happens every time.
So I tried an experiment with Vista -- I deliberately limit the
number of windows updates I allow at any one time, and then use
qemu-img commit after each small update. Voila, everything now
works perfectly -- no file corruption!