[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/4] qmp-cont: invalidate on RUN_STATE_PRELAUNCH
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH 2/4] qmp-cont: invalidate on RUN_STATE_PRELAUNCH |
Date: |
Tue, 7 Mar 2017 11:02:04 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 25.02.2017 um 20:31 hat Vladimir Sementsov-Ogievskiy geschrieben:
> We must invalidate on RUN_STATE_PRELAUNCH too, as it is available
> through qmp_system_reset from RUN_STATE_POSTMIGRATE. Otherwise, we will
> come to
>
> qemu-kvm: block/io.c:1406: bdrv_co_do_pwritev:
> Assertion `!(bs->open_flags & 0x0800)' failed.
>
> on the first write after vm start.
>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Wouldn't it make more sense to invalidate in qmp_system_reset() where
the migration states are left?
Or maybe BDRV_O_INACTIVE could even be tied directly to runstates? Not
sure how realistic this one is, but if we start adding invalidate_cache
calls all over the place, maybe that's a sign that we need to look for a
more central place.
Kevin
> qmp.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/qmp.c b/qmp.c
> index dfaabac1a6..e61795d033 100644
> --- a/qmp.c
> +++ b/qmp.c
> @@ -198,7 +198,8 @@ void qmp_cont(Error **errp)
> /* Continuing after completed migration. Images have been inactivated to
> * allow the destination to take control. Need to get control back now.
> */
> if (runstate_check(RUN_STATE_FINISH_MIGRATE) ||
> - runstate_check(RUN_STATE_POSTMIGRATE))
> + runstate_check(RUN_STATE_POSTMIGRATE) ||
> + runstate_check(RUN_STATE_PRELAUNCH))
> {
> bdrv_invalidate_cache_all(&local_err);
> if (local_err) {
> --
> 2.11.1
>