[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH V6 11/14] tests/qtest: precopy migration with suspend
From: |
Peter Xu |
Subject: |
Re: [PATCH V6 11/14] tests/qtest: precopy migration with suspend |
Date: |
Tue, 5 Dec 2023 16:07:59 -0500 |
On Tue, Dec 05, 2023 at 11:14:43AM -0500, Steven Sistare wrote:
> Calling migrate_wait_for_dirty_mem proves that a source write is propagated
> to the dest, even for the suspended case. We fully expect that, but a good
> test verifies our expectations. That is done in the first loop of
> migrate_wait_for_dirty_mem. After that, we must check for the suspended
> state, because the second loop will not terminate. Here is a more explicit
> version:
>
> static void migrate_wait_for_dirty_mem(QTestState *from,
> QTestState *to)
> {
> uint64_t watch_address = start_address + MAGIC_OFFSET_BASE;
> uint64_t marker_address = start_address + MAGIC_OFFSET;
> uint8_t watch_byte;
>
> /*
> * Wait for the MAGIC_MARKER to get transferred, as an
> * indicator that a migration pass has made some known
> * amount of progress.
> */
> do {
> usleep(1000 * 10);
> } while (qtest_readq(to, marker_address) != MAGIC_MARKER);
>
> + /* If suspended, src only iterates once, and watch_byte may never change
> */
> + if (src_state.suspend_me) {
> + return;
> + }
Ok.
> Yes, it played that role. I will delete all the existing calls to
> wait_for_suspended,
> and add them after wait_for_serial("src_serial") in test_precopy_common and
> migrate_postcopy_prepare.
Sounds good.
--
Peter Xu