Hello Kevin, hello Michael, On Wednesday 12 December 2012 17:54:58 Kevin Wolf wrote: > Am 12.12.2012 15:09, schrieb Philipp Hahn: > > Am Mittwoch 12 Dezember 2012 14:41:49 schrieb Kevin Wolf: > >> As you can see in the commit message of that patch I was convinced that > >> no bug did exist in practice and this was only dangerous with respect to > >> future changes. Therefore my first question is if you're using an > >> unmodified upstream qemu or if some backported patches are applied to > >> it? If it's indeed unmodified, we should probably review the code once > >> again to understand why it makes a difference. > > > > This were all unmodified versions directly from git between > > "qemu-kvm-1.1.0" and "qemu-kvm-1.2.0" > > > > "git checkout b7ab0fea37c15ca9e249c42c46f5c48fd1a0943c" works, > > "git checkout b7ab0fea37c15ca9e249c42c46f5c48fd1a0943c~1" is broken. > > "git checkout qemu-kvm-1.1.2" is broken, > > "git checkout qemu-kvm-1.1.2 ; git cherry-pick > > b7ab0fea37c15ca9e249c42c46f5c48fd1a0943c" works > > Ok, thanks for clarifying. Then I must have missed some interesting case > while doing the patch.
I think I found your missing link: After filling in "QCowL2Meta *m", that request ist queued: QLIST_INSERT_HEAD(&s->cluster_allocs, m, next_in_flight); do prevent double allocating the same cluster for overlapping requests, which is checked in do_alloc_cluster_offset(). I guess that since the sector count was wrong, the overlap detection didn't work and the two concurrent write requests to the same cluster overwrote each other. > Ideally we would find a sequence of qemu-io commands to reliably > reproduce this. You're the block guru, so I leave that to you (or anybody else who knows more about the working of qemu-io.) ;-) Sincerely Philipp -- Philipp Hahn Open Source Software Engineer h...@univention.de Univention GmbH be open. fon: +49 421 22 232- 0 Mary-Somerville-Str.1 D-28359 Bremen fax: +49 421 22 232-99 http://www.univention.de/
signature.asc
Description: This is a digitally signed message part.