From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40418) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a4OQB-000337-RC for qemu-devel@nongnu.org; Thu, 03 Dec 2015 02:35:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a4OQ8-0003dF-Ko for qemu-devel@nongnu.org; Thu, 03 Dec 2015 02:35:19 -0500 Received: from mx1.redhat.com ([209.132.183.28]:33451) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a4OQ8-0003d9-GR for qemu-devel@nongnu.org; Thu, 03 Dec 2015 02:35:16 -0500 Date: Thu, 3 Dec 2015 15:35:11 +0800 From: Fam Zheng Message-ID: <20151203073511.GA31986@ad.usersys.redhat.com> References: <1447255003-2043-1-git-send-email-vsementsov@virtuozzo.com> <1447255003-2043-2-git-send-email-vsementsov@virtuozzo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1447255003-2043-2-git-send-email-vsementsov@virtuozzo.com> Subject: Re: [Qemu-devel] [PATCH 01/13] hbitmap: serialization List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Vladimir Sementsov-Ogievskiy Cc: kwolf@redhat.com, peter.maydell@linaro.org, quintela@redhat.com, qemu-devel@nongnu.org, dgilbert@redhat.com, stefanha@redhat.com, den@openvz.org, amit.shah@redhat.com, pbonzini@redhat.com, jsnow@redhat.com On Wed, 11/11 18:16, Vladimir Sementsov-Ogievskiy wrote: > +void hbitmap_deserialize_finish(HBitmap *bitmap) > +{ > + int64_t i, size, prev_size; > + int lev; > + > + /* restore levels starting from penultimate to zero level, assuming > + * that the last level is ok */ > + size = MAX((bitmap->size + BITS_PER_LONG - 1) >> BITS_PER_LEVEL, 1); > + for (lev = HBITMAP_LEVELS - 1; lev-- > 0; ) { > + prev_size = size; > + size = MAX((size + BITS_PER_LONG - 1) >> BITS_PER_LEVEL, 1); > + memset(bitmap->levels[lev], 0, size * sizeof(unsigned long)); > + > + for (i = 0; i < prev_size; ++i) { > + if (bitmap->levels[lev + 1][i]) { > + bitmap->levels[lev][i >> BITS_PER_LEVEL] |= > + 1 << (i & (BITS_PER_LONG - 1)); This should be 1UL. Fam > + } > + } > + } > + > + bitmap->levels[0][0] |= 1UL << (BITS_PER_LONG - 1); > +} > + > void hbitmap_free(HBitmap *hb) > { > unsigned i; > -- > 2.1.4 > >