Hi,
 Multiple guests rebooting, across multiple OVS nodes. Not all guest at 
the same time.
Error in /var/log/xend.log taking the form:
...
 [2010-09-06 12:19:55 8816] WARNING (image:490) domain 234_sscgrantsd: 
device model failure: pid 16657: died due to signal 11; see
...
This is due to some ide state pointer in ide.c is NULL.
Patch from carnold@xxxxxxxxxx fixed this problem.
After applying, our system get steady.
--- xen-3.4.0.old/qemu-xen.git/hw/ide.c 2010-10-19 10:45:23.000000000 +0800
+++ xen-3.4.0/qemu-xen.git/hw/ide.c     2010-10-19 10:52:57.000000000 +0800
@@ -934,8 +934,9 @@ static inline void ide_dma_submit_check(
static inline void ide_set_irq(IDEState *s)
{
-    BMDMAState *bm = s->bmdma;
-    if (!s->bs) return; /* ouch! (see ide_flush_cb) */
+    BMDMAState *bm;
+    if (!s || !s->bs) return; /* ouch! (see ide_flush_cb) */
+    bm = s->bmdma;
    if (!(s->cmd & IDE_CMD_DISABLE_IRQ)) {
        if (bm) {
            bm->status |= BM_STATUS_INT;
@@ -1223,14 +1224,14 @@ static void ide_read_dma_cb(void *opaque
    int n;
    int64_t sector_num;
+    if (!s || !s->bs) return; /* ouch! (see ide_flush_cb) */
+
    if (ret < 0) {
        dma_buf_commit(s, 1);
       ide_dma_error(s);
       return;
    }
-    if (!s->bs) return; /* ouch! (see ide_flush_cb) */
-
    n = s->io_buffer_size >> 9;
    sector_num = ide_get_sector(s);
    if (n > 0) {
@@ -1334,6 +1335,8 @@ static void ide_write_flush_cb(void *opa
    BMDMAState *bm = opaque;
    IDEState *s = bm->ide_if;
+    if (!s) return;
+
    if (ret != 0) {
       ide_dma_error(s);
       return;
@@ -1365,6 +1368,8 @@ static void ide_write_dma_cb(void *opaqu
    int n;
    int64_t sector_num;
+    if (!s || !s->bs) return; /* ouch! (see ide_flush_cb) */
+
    if (ret < 0) {
        if (ide_handle_write_error(s, -ret,  BM_STATUS_DMA_RETRY))
            return;
@@ -1375,8 +1380,6 @@ static void ide_write_dma_cb(void *opaqu
      return; /* ouch2 */
    }
-    if (!s->bs) return; /* ouch! (see ide_flush_cb) */
-
    n = s->io_buffer_size >> 9;
    sector_num = ide_get_sector(s);
    if (n > 0) {
@@ -1433,7 +1436,7 @@ static void ide_flush_cb(void *opaque, i
{
    IDEState *s = opaque;
-    if (!s->bs) return; /* ouch! (see below) */
+    if (!s || !s->bs) return; /* ouch! (see below) */
    if (ret) {
        /* We are completely doomed.  The IDE spec does not permit us
@@ -1690,7 +1693,7 @@ static void ide_atapi_cmd_read_dma_cb(vo
    IDEState *s = bm->ide_if;
    int data_offset, n;
-    if (!s->bs) return; /* ouch! (see ide_flush_cb) */
+    if (!s || !s->bs) return; /* ouch! (see ide_flush_cb) */
    if (ret < 0) {
        ide_atapi_io_error(s, ret);
@@ -2368,7 +2371,7 @@ static void cdrom_change_cb(void *opaque
    IDEState *s = opaque;
    uint64_t nb_sectors;
-    if (!s->bs) return; /* ouch! (see ide_flush_cb) */
+    if (!s || !s->bs) return; /* ouch! (see ide_flush_cb) */
    bdrv_get_geometry(s->bs, &nb_sectors);
    s->nb_sectors = nb_sectors;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 |