From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40862) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WQzSY-00054z-12 for qemu-devel@nongnu.org; Fri, 21 Mar 2014 09:26:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WQzST-0007c9-4A for qemu-devel@nongnu.org; Fri, 21 Mar 2014 09:26:05 -0400 Received: from mx1.redhat.com ([209.132.183.28]:14628) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WQzSS-0007c4-SA for qemu-devel@nongnu.org; Fri, 21 Mar 2014 09:26:01 -0400 From: Juan Quintela In-Reply-To: <1395317703-10412-1-git-send-email-arei.gonglei@huawei.com> (arei gonglei's message of "Thu, 20 Mar 2014 20:15:03 +0800") References: <1395317703-10412-1-git-send-email-arei.gonglei@huawei.com> Date: Fri, 21 Mar 2014 14:25:46 +0100 Message-ID: <87vbv7heed.fsf@elfo.mitica> MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [Qemu-devel] [PATCH] migration: static variables will not be reset at second migration Reply-To: quintela@redhat.com List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: arei.gonglei@huawei.com Cc: ChenLiang , qemu-devel@nongnu.org, dgilbert@redhat.com, owasserm@redhat.com, pbonzini@redhat.com wrote: > From: ChenLiang > > The static variables in migration_bitmap_sync will not be reset in > the case of a second attempted migration. > > Signed-off-by: ChenLiang > Signed-off-by: Gonglei Good catch. Applied.. > --- > arch_init.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/arch_init.c b/arch_init.c > index 60c975d..10516cb 100644 > --- a/arch_init.c > +++ b/arch_init.c > @@ -468,15 +468,23 @@ static void migration_bitmap_sync_range(ram_addr_t start, ram_addr_t length) > > > /* Needs iothread lock! */ > +/* Fix me: there are too many global variables used in migration process. */ > +static int64_t start_time; > +static int64_t bytes_xfer_prev; > +static int64_t num_dirty_pages_period; > + > +static void migration_bitmap_sync_init(void) > +{ > + start_time = 0; > + bytes_xfer_prev = 0; > + num_dirty_pages_period = 0; > +} > > static void migration_bitmap_sync(void) > { > RAMBlock *block; > uint64_t num_dirty_pages_init = migration_dirty_pages; > MigrationState *s = migrate_get_current(); > - static int64_t start_time; > - static int64_t bytes_xfer_prev; > - static int64_t num_dirty_pages_period; > int64_t end_time; > int64_t bytes_xfer_now; > > @@ -733,6 +741,7 @@ static int ram_save_setup(QEMUFile *f, void *opaque) > migration_dirty_pages = ram_pages; > mig_throttle_on = false; > dirty_rate_high_cnt = 0; > + migration_bitmap_sync_init(); > > if (migrate_use_xbzrle()) { > qemu_mutex_lock_iothread();