From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39100) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bIn3j-0006SL-1u for qemu-devel@nongnu.org; Thu, 30 Jun 2016 21:15:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bIn3d-0002ty-VG for qemu-devel@nongnu.org; Thu, 30 Jun 2016 21:15:53 -0400 Received: from [59.151.112.132] (port=32437 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bIn3d-0002th-Fp for qemu-devel@nongnu.org; Thu, 30 Jun 2016 21:15:49 -0400 Message-ID: <5775C55F.6070705@cn.fujitsu.com> Date: Fri, 1 Jul 2016 09:20:31 +0800 From: Changlong Xie MIME-Version: 1.0 References: <1467273706-5732-1-git-send-email-xiecl.fnst@cn.fujitsu.com> <20160630082515.GG23296@ad.usersys.redhat.com> <5774DC40.8090806@cn.fujitsu.com> <20160630140027.GB17242@localhost.localdomain> <5d151275-3afd-b614-5c7f-d00f9e5b1ef2@redhat.com> In-Reply-To: <5d151275-3afd-b614-5c7f-d00f9e5b1ef2@redhat.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] dirty-bitmap: remove unnecessary return List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: John Snow , Jeff Cody Cc: Kevin Wolf , Fam Zheng , qemu devel , Stefan Hajnoczi , Max Reitz On 07/01/2016 02:18 AM, John Snow wrote: > > > On 06/30/2016 10:00 AM, Jeff Cody wrote: >> On Thu, Jun 30, 2016 at 04:45:52PM +0800, Changlong Xie wrote: >>> On 06/30/2016 04:25 PM, Fam Zheng wrote: >>>> On Thu, 06/30 16:01, Changlong Xie wrote: >>>>> Otherwise, we could never trigger assert(!bitmap->successor) >>>>> >>>>> Signed-off-by: Changlong Xie >>>>> --- >>>>> block/dirty-bitmap.c | 1 - >>>>> 1 file changed, 1 deletion(-) >>>>> >>>>> diff --git a/block/dirty-bitmap.c b/block/dirty-bitmap.c >>>>> index 4902ca5..e9df5ac 100644 >>>>> --- a/block/dirty-bitmap.c >>>>> +++ b/block/dirty-bitmap.c >>>>> @@ -131,7 +131,6 @@ int bdrv_dirty_bitmap_create_successor(BlockDriverState *bs, >>>>> if (bdrv_dirty_bitmap_frozen(bitmap)) { >>>>> error_setg(errp, "Cannot create a successor for a bitmap that is " >>>>> "currently frozen"); >>>>> - return -1; >>>>> } >>>>> assert(!bitmap->successor); >>>> >>>> This is wrong. Then we will always trigger assert for a frozen bitmap. >>>> >>> >>> IMO, when it's a frozen bitmap, we will always return -1. So >>> "assert(!bitmap->successor)" is useless here, am i right? >>> >> >> I don't see a path where the assert could trigger, so I would agree that the >> assert itself, while harmless, is not necessary (although it could be argued >> it is in place in case the code above it changes in a way that does not >> check bitmap->successor). Agree >> >> That doesn't mean we want to try and trigger an assert, however! :) The >> error return is the proper error handling -- we don't expect that asserts >> should ever be encountered QEMU, if one happens that is a sign of a bug. >> Got it >> Jeff >> > > The assert was indeed added to ensure that if the valid states of the > bitmap later expanded or changed, that the status checkers (e.g. > bdrv_dirty_bitmap_frozen()) were changed to match. > Thanks for all explanations. Although my brain always forces to think it's a redundant execution path, but since it's harmless, let's keep it. > > . >