|
From: | Vladimir Sementsov-Ogievskiy |
Subject: | Re: [Qemu-block] [PATCH 2/4] qmp-cont: invalidate on RUN_STATE_PRELAUNCH |
Date: | Tue, 7 Mar 2017 13:11:23 +0300 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 |
07.03.2017 13:02, Kevin Wolf wrote:
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.
I've proposed it in cover letter) These bugs and my fixes are just show that something should be rethought.. I don't claim that these fixes are true way, they are just the simplest.
Kevinqmp.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
-- Best regards, Vladimir
[Prev in Thread] | Current Thread | [Next in Thread] |