All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fabiano Rosas <farosas@suse.de>
To: "Denis V. Lunev" <den@openvz.org>, qemu-devel@nongnu.org
Cc: qemu-block@nongnu.org, "Denis V. Lunev" <den@openvz.org>
Subject: Re: [PATCH 1/1] tests/qtest/ahci: fix a racy deadlock in the engine stop test
Date: Wed, 09 Sep 2026 19:48:40 -0300	[thread overview]
Message-ID: <87fqzi6nxz.fsf@suse.de> (raw)
In-Reply-To: <20260830183534.104435-1-den@openvz.org>

"Denis V. Lunev" <den@openvz.org> writes:

> From: Denis V. Lunev <den@openvz.org>
>
> test_write_engine_stop_in_flight() resumes the suspended backend write
> and goes straight on to restart the command engine and read the second
> sector back. Whether the write has retired by then is a race. While it
> is still outstanding the drive is busy, and handle_cmd() drops a
> command that arrives in that state instead of queueing it. Nothing
> retries the drop, so the PxCI slot stays set and no D2H FIS is posted.
> ahci_command_wait() polls both with no timeout, so the test deadlocks
> until the harness kills it.
>
> Drain the port before issuing the read, so the abandoned write has
> retired and the engine is idle. Host load stretches the gap between the
> resume and the write completing, which is why the deadlock only shows
> up on a loaded machine.
>
> Fixes: d05ae87e7a6a ("tests/qtest/ahci: regression test for a PIO write vs. engine stop")
> Signed-off-by: Denis V. Lunev <den@openvz.org>
> ---
>  tests/qtest/ahci-test.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/tests/qtest/ahci-test.c b/tests/qtest/ahci-test.c
> index b143862ce7..2552fa39f1 100644
> --- a/tests/qtest/ahci-test.c
> +++ b/tests/qtest/ahci-test.c
> @@ -1914,6 +1914,12 @@ static void test_write_engine_stop_in_flight(void)
>  
>      g_free(qtest_hmp(ahci->parent->qts, "qemu-io drive0 \"resume wr\""));
>  
> +    /*
> +     * Retire the abandoned write. handle_cmd() drops a command that arrives
> +     * while the drive is still busy and nothing retries it.
> +     */
> +    g_free(qtest_hmp(ahci->parent->qts, "qemu-io drive0 \"aio_flush\""));
> +
>      /* Round-trip through the device to confirm qemu is still alive. */
>      ahci_px_rreg(ahci, port, AHCI_PX_TFD);

Reviewed-by: Fabiano Rosas <farosas@suse.de>


  reply	other threads:[~2026-09-09 22:49 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-30 18:35 [PATCH 1/1] tests/qtest/ahci: fix a racy deadlock in the engine stop test Denis V. Lunev
2026-09-09 22:48 ` Fabiano Rosas [this message]
2026-09-10  8:39   ` Denis V. Lunev
2026-09-10 12:32     ` Fabiano Rosas

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=87fqzi6nxz.fsf@suse.de \
    --to=farosas@suse.de \
    --cc=den@openvz.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /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.