qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 03/28] ide-test: add test for werror=stop


From: John Snow
Subject: Re: [Qemu-devel] [PATCH 03/28] ide-test: add test for werror=stop
Date: Thu, 31 Jul 2014 18:06:19 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0

On 07/31/2014 06:58 AM, Stefan Hajnoczi wrote:
On Mon, Jul 07, 2014 at 02:17:44PM -0400, John Snow wrote:
+static void test_retry_flush(void)
+{
+    uint8_t data;
+    const char *s;
+
+    prepare_blkdebug_script(debug_path, "flush_to_disk");
+
+    ide_test_start(
+        "-vnc none "
+        "-drive 
file=blkdebug:%s:%s,if=ide,cache=writeback,rerror=stop,werror=stop",
+        debug_path, tmp_path);
+
+    /* FLUSH CACHE command on device 0*/
+    outb(IDE_BASE + reg_device, 0);
+    outb(IDE_BASE + reg_command, CMD_FLUSH_CACHE);
+
+    /* Check status while request is in flight*/
+    data = inb(IDE_BASE + reg_status);
+    assert_bit_set(data, BSY | DRDY);
+    assert_bit_clear(data, DF | ERR | DRQ);
+
+    sleep(1);                    /* HACK: wait for event */
+
+    /* Complete the command */
+    s = "{'execute':'cont' }";
+    while (!qmp(s)) {
+        s = "";
+        sleep(1);
+    }
I guess we're supposed to wait for the block I/O error event when the
machine stops.  Please implement that and replace this polling loop.

See the STOP event in docs/qmp/qmp-events.txt.

Paolo: I edited in a bit to check for the STOP event instead of sleeping in V2, but what's the point of setting s = "" and sleeping and resending a blank string? Can't we just g_assert(qmp(s)) the first go around, provided the STOP event has already occurred?

It works in practice, but I am curious.

--J




reply via email to

[Prev in Thread] Current Thread [Next in Thread]