All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aurelien Jarno <aurelien@aurel32.net>
To: carsteno@de.ibm.com
Cc: "kvm-devel@lists.sourceforge.net"
	<kvm-devel@lists.sourceforge.net>,
	Linux-kernel@vger.kernel.org
Subject: Re: [kvm-devel] severe bug in 2.6.23+ kvm.git
Date: Fri, 19 Oct 2007 13:31:17 +0200	[thread overview]
Message-ID: <47189585.5010901@aurel32.net> (raw)
In-Reply-To: <47189371.7080104@de.ibm.com>

[-- Attachment #1: Type: text/plain, Size: 1614 bytes --]

Carsten Otte a écrit :
> Hi list,
> 
> we've experienced a severe bug in current kvm.git, that may have been 
> introduced to the git tree quite recently around last weekend. 2.6.23 
> is broken, 2.6.23-rc8 works for us. The symptom is, that our operon 
> kvm test machine shredders its hard disk content to a state that is 
> not correctably by the file system checker. We use raid1 md mirrored 
> ext3 file systems on 4 sata hard disks on it, and we've verified 
> correct operation of the hardware via badblocks and memtest86.
> The problem occurs even without kvm modules loaded, so the cause seems 
> to be something that Avi pulled elsewhere. Did anyone else experience 
> similar problems with the 2.6.23 based kvm tree? Does anyone have an 
> idea about a possible cause, which would help us debugging it?
> 

Could you please precise what is corrupted? The guest disk image?

If that's the case, I experienced the same problem since
kvm-userspace.git has been updated to the latest qemu CVS, and I can
reproduce it with plain QEMU. I am able to reproduce it easily by
booting FreeBSD.

The problem is actually in QEMU, it has been broken by this commit:
http://cvs.savannah.nongnu.org/viewvc/qemu/hw/ide.c?root=qemu&r1=1.64&r2=1.65

You can try to apply the attached patch, it reverts this commit and can
be applied to the latest QEMU CVS and to the latest KVM versions.

-- 
  .''`.  Aurelien Jarno	            | GPG: 1024D/F1BCDB73
 : :' :  Debian developer           | Electrical Engineer
 `. `'   aurel32@debian.org         | aurelien@aurel32.net
   `-    people.debian.org/~aurel32 | www.aurel32.net

[-- Attachment #2: qemu-ide-corruption.diff --]
[-- Type: text/x-patch, Size: 2586 bytes --]

Index: hw/ide.c
===================================================================
RCS file: /sources/qemu/qemu/hw/ide.c,v
retrieving revision 1.69
diff -u -r1.69 ide.c
--- hw/ide.c	17 Sep 2007 08:09:47 -0000	1.69
+++ hw/ide.c	10 Oct 2007 17:55:33 -0000
@@ -865,44 +865,10 @@
     ide_set_irq(s);
 }
 
-static void ide_sector_write_aio_cb(void *opaque, int ret)
-{
-    BMDMAState *bm = opaque;
-    IDEState *s = bm->ide_if;
-
-#ifdef TARGET_I386
-    if (win2k_install_hack && ((++s->irq_count % 16) == 0)) {
-	/* It seems there is a bug in the Windows 2000 installer HDD
-	   IDE driver which fills the disk with empty logs when the
-	   IDE write IRQ comes too early. This hack tries to correct
-	   that at the expense of slower write performances. Use this
-	   option _only_ to install Windows 2000. You must disable it
-	   for normal use. */
-	qemu_mod_timer(s->sector_write_timer,
-		       qemu_get_clock(vm_clock) + (ticks_per_sec / 1000));
-    } else
-#endif
-    {
-	ide_set_irq(s);
-    }
-    bm->aiocb = NULL;
-}
-
 static void ide_sector_write(IDEState *s)
 {
-    BMDMAState *bm;
     int64_t sector_num;
-    int n, n1;
-
-    s->io_buffer_index = 0;
-    s->io_buffer_size = 0;
-    bm = s->bmdma;
-    if(bm == NULL) {
-	bm = qemu_mallocz(sizeof(BMDMAState));
-	s->bmdma = bm;
-    }
-    bm->ide_if = s;
-    bm->dma_cb = ide_sector_write_aio_cb;
+    int ret, n, n1;
 
     s->status = READY_STAT | SEEK_STAT;
     sector_num = ide_get_sector(s);
@@ -912,6 +878,7 @@
     n = s->nsector;
     if (n > s->req_nb_sectors)
         n = s->req_nb_sectors;
+    ret = bdrv_write(s->bs, sector_num, s->io_buffer, n);
     s->nsector -= n;
     if (s->nsector == 0) {
         /* no more sectors to write */
@@ -924,8 +891,21 @@
     }
     ide_set_sector(s, sector_num + n);
 
-    bm->aiocb = bdrv_aio_write(s->bs, sector_num, s->io_buffer, n,
-			       ide_sector_write_aio_cb, bm);
+#ifdef TARGET_I386
+    if (win2k_install_hack && ((++s->irq_count % 16) == 0)) {
+        /* It seems there is a bug in the Windows 2000 installer HDD
+           IDE driver which fills the disk with empty logs when the
+           IDE write IRQ comes too early. This hack tries to correct
+           that at the expense of slower write performances. Use this
+           option _only_ to install Windows 2000. You must disable it
+           for normal use. */
+        qemu_mod_timer(s->sector_write_timer, 
+                       qemu_get_clock(vm_clock) + (ticks_per_sec / 1000));
+    } else 
+#endif
+    {
+        ide_set_irq(s);
+    }
 }
 
 /* XXX: handle errors */

  reply	other threads:[~2007-10-19 11:31 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-19 11:22 severe bug in 2.6.23+ kvm.git Carsten Otte
2007-10-19 11:22 ` Carsten Otte
2007-10-19 11:31 ` Aurelien Jarno [this message]
2007-10-19 11:37   ` [kvm-devel] " Carsten Otte
2007-10-19 11:42     ` Laurent Vivier
2007-10-19 11:42       ` Laurent Vivier
2007-10-19 11:49       ` [kvm-devel] " Carsten Otte
2007-10-19 11:49         ` Carsten Otte
2007-10-19 11:53         ` [kvm-devel] " Laurent Vivier
2007-10-19 11:53           ` Laurent Vivier
2007-10-19 11:58           ` [kvm-devel] " Christian Borntraeger
2007-10-19 11:58             ` Christian Borntraeger
2007-10-19 11:57     ` [kvm-devel] " Mike Lampard
2007-10-19 11:57       ` Mike Lampard
2007-10-19 12:21       ` [kvm-devel] " Carsten Otte
2007-10-19 12:21         ` Carsten Otte
2007-10-19 13:44         ` [kvm-devel] " Carsten Otte
2007-10-19 13:44           ` Carsten Otte
2007-10-19 14:18           ` [kvm-devel] " Jan Engelhardt
2007-10-19 14:18             ` Jan Engelhardt
2007-10-19 14:48             ` [kvm-devel] " Christian Borntraeger
2007-10-19 14:48               ` Christian Borntraeger
2007-10-19 14:57               ` [kvm-devel] " Laurent Vivier
2007-10-19 15:23                 ` Christian Borntraeger
2007-10-19 15:43                   ` Luca Tettamanti
2007-10-19 15:43                     ` Luca Tettamanti
2007-10-19 18:49                     ` [kvm-devel] " Christian Borntraeger
2007-10-19 11:55 ` Carsten Otte
2007-10-19 11:55   ` Carsten Otte
2007-10-19 15:13 ` [kvm-devel] " Avi Kivity
2007-10-22 10:57   ` Carsten Otte
2007-10-22 10:57     ` Carsten Otte
2007-10-22 11:48     ` [kvm-devel] " Avi Kivity
2007-10-22 13:14       ` Carsten Otte
2007-10-22 13:14         ` Carsten Otte
2007-10-22 14:00       ` [kvm-devel] " Carsten Otte
2007-10-22 14:00         ` Carsten Otte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=47189585.5010901@aurel32.net \
    --to=aurelien@aurel32.net \
    --cc=Linux-kernel@vger.kernel.org \
    --cc=carsteno@de.ibm.com \
    --cc=kvm-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.