From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38461) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YQCMq-0008MV-3C for qemu-devel@nongnu.org; Tue, 24 Feb 2015 05:05:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YQCMk-0002I5-Ob for qemu-devel@nongnu.org; Tue, 24 Feb 2015 05:05:27 -0500 Received: from mx1.redhat.com ([209.132.183.28]:41217) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YQCMk-0002Ho-GB for qemu-devel@nongnu.org; Tue, 24 Feb 2015 05:05:22 -0500 Date: Tue, 24 Feb 2015 15:35:06 +0530 From: Amit Shah Message-ID: <20150224100506.GC26558@grmbl.mre> References: <1423778591-12590-1-git-send-email-quintela@redhat.com> <1423778591-12590-3-git-send-email-quintela@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1423778591-12590-3-git-send-email-quintela@redhat.com> Subject: Re: [Qemu-devel] [PATCH 2/6] ram_find_and_save_block: change calling convention List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Juan Quintela Cc: liang.z.li@intel.com, qemu-devel@nongnu.org On (Thu) 12 Feb 2015 [23:03:07], Juan Quintela wrote: > Add a parameter to pass the number of bytes written, and make it return > the number of pages written instead. > > Signed-off-by: Juan Quintela > --- > arch_init.c | 44 ++++++++++++++++++++++---------------------- > 1 file changed, 22 insertions(+), 22 deletions(-) > > diff --git a/arch_init.c b/arch_init.c > index 0066cf5..1133b26 100644 > --- a/arch_init.c > +++ b/arch_init.c > @@ -650,14 +650,19 @@ static int ram_save_page(QEMUFile *f, RAMBlock* block, ram_addr_t offset, > return bytes_sent; > } > > -/* > - * ram_find_and_save_block: Finds a page to send and sends it to f > +/** > + * ram_find_and_save_block: Finds a dirty page and sends it to f > * > - * Returns: The number of bytes written. > + * Returns: The number of pages written > * 0 means no dirty pages > + * > + * @f: QEMUFile where to send the data > + * @last_stage: if we are at the completion stage > + * @bytes_transferred: increase it with the number of transferred bytes > */ > > -static int ram_find_and_save_block(QEMUFile *f, bool last_stage) > +static int ram_find_and_save_block(QEMUFile *f, bool last_stage, > + uint64_t *bytes_transferred) > { > RAMBlock *block = last_seen_block; > ram_addr_t offset = last_offset; > @@ -696,7 +701,9 @@ static int ram_find_and_save_block(QEMUFile *f, bool last_stage) > last_seen_block = block; > last_offset = offset; > > - return bytes_sent; > + *bytes_transferred += bytes_sent; > + > + return (bytes_sent != 0); Shouldn't page be counted here? > } > > static uint64_t bytes_transferred; > @@ -869,7 +876,7 @@ static int ram_save_iterate(QEMUFile *f, void *opaque) > int ret; > int i; > int64_t t0; > - int total_sent = 0; > + int pages_sent = 0; > > qemu_mutex_lock_ramlist(); > > @@ -882,14 +889,14 @@ static int ram_save_iterate(QEMUFile *f, void *opaque) > t0 = qemu_clock_get_ns(QEMU_CLOCK_REALTIME); > i = 0; > while ((ret = qemu_file_rate_limit(f)) == 0) { > - int bytes_sent; > + int pages; Let's make these unsigned right from the start; we're counting positive numbers. Amit