Message ID | 161700516327.1141158.8366564693714562536.stgit@pasha-ThinkPad-X280 (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | qcow2: use external virtual timers | expand |
On 29/03/21 10:06, Pavel Dovgalyuk wrote: > Regular virtual timers are used to emulate timings > related to vCPU and peripheral states. QCOW2 uses timers > to clean the cache. These timers should have external > flag. In the opposite case they affect the execution > and it can't be recorded and replayed. > This patch adds external flag to the timer for qcow2 > cache clean. > > Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru> > Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> > --- > block/qcow2.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/block/qcow2.c b/block/qcow2.c > index 0db1227ac9..2fb43c6f7e 100644 > --- a/block/qcow2.c > +++ b/block/qcow2.c > @@ -840,9 +840,10 @@ static void cache_clean_timer_init(BlockDriverState *bs, AioContext *context) > { > BDRVQcow2State *s = bs->opaque; > if (s->cache_clean_interval > 0) { > - s->cache_clean_timer = aio_timer_new(context, QEMU_CLOCK_VIRTUAL, > - SCALE_MS, cache_clean_timer_cb, > - bs); > + s->cache_clean_timer = > + aio_timer_new_with_attrs(context, QEMU_CLOCK_VIRTUAL, > + SCALE_MS, QEMU_TIMER_ATTR_EXTERNAL, > + cache_clean_timer_cb, bs); > timer_mod(s->cache_clean_timer, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + > (int64_t) s->cache_clean_interval * 1000); > } > Cc: qemu-block@nongnu.org
On 29.03.21 10:06, Pavel Dovgalyuk wrote: > Regular virtual timers are used to emulate timings > related to vCPU and peripheral states. QCOW2 uses timers > to clean the cache. These timers should have external > flag. In the opposite case they affect the execution > and it can't be recorded and replayed. > This patch adds external flag to the timer for qcow2 > cache clean. > > Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru> > Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> > --- > block/qcow2.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) Thanks, applied to my block branch: https://git.xanclic.moe/XanClic/qemu/commits/branch/block Max
diff --git a/block/qcow2.c b/block/qcow2.c index 0db1227ac9..2fb43c6f7e 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -840,9 +840,10 @@ static void cache_clean_timer_init(BlockDriverState *bs, AioContext *context) { BDRVQcow2State *s = bs->opaque; if (s->cache_clean_interval > 0) { - s->cache_clean_timer = aio_timer_new(context, QEMU_CLOCK_VIRTUAL, - SCALE_MS, cache_clean_timer_cb, - bs); + s->cache_clean_timer = + aio_timer_new_with_attrs(context, QEMU_CLOCK_VIRTUAL, + SCALE_MS, QEMU_TIMER_ATTR_EXTERNAL, + cache_clean_timer_cb, bs); timer_mod(s->cache_clean_timer, qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + (int64_t) s->cache_clean_interval * 1000); }