From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54641) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UkSL7-0003Yb-BS for qemu-devel@nongnu.org; Thu, 06 Jun 2013 01:02:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UkSL6-0003Et-7H for qemu-devel@nongnu.org; Thu, 06 Jun 2013 01:02:21 -0400 Received: from e28smtp04.in.ibm.com ([122.248.162.4]:46897) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UkSL5-00035q-JR for qemu-devel@nongnu.org; Thu, 06 Jun 2013 01:02:20 -0400 Received: from /spool/local by e28smtp04.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 6 Jun 2013 10:26:31 +0530 Received: from d28relay05.in.ibm.com (d28relay05.in.ibm.com [9.184.220.62]) by d28dlp01.in.ibm.com (Postfix) with ESMTP id DBCF5E004C for ; Thu, 6 Jun 2013 10:34:56 +0530 (IST) Received: from d28av05.in.ibm.com (d28av05.in.ibm.com [9.184.220.67]) by d28relay05.in.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r56523S645088974 for ; Thu, 6 Jun 2013 10:32:04 +0530 Received: from d28av05.in.ibm.com (loopback [127.0.0.1]) by d28av05.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r56527e1003785 for ; Thu, 6 Jun 2013 15:02:07 +1000 Message-ID: <51B0176C.20509@linux.vnet.ibm.com> Date: Thu, 06 Jun 2013 13:00:28 +0800 From: Wenchao Xia MIME-Version: 1.0 References: <1369917299-5725-1-git-send-email-stefanha@redhat.com> <1369917299-5725-5-git-send-email-stefanha@redhat.com> In-Reply-To: <1369917299-5725-5-git-send-email-stefanha@redhat.com> Content-Type: text/plain; charset=GB2312 Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH v5 04/11] blockdev: drop redundant proto_drv check List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi Cc: Kevin Wolf , Fam Zheng , qemu-devel@nongnu.org, imain@redhat.com, Paolo Bonzini , dietmar@proxmox.com ÓÚ 2013-5-30 20:34, Stefan Hajnoczi дµÀ: > It is not necessary to check that we can find a protocol block driver > since we create or open the image file. This produces the error that we > need anyway. > > Besides, the QERR_INVALID_BLOCK_FORMAT is inappropriate since the > protocol is incorrect rather than the format. > > Also drop an empty line between bdrv_open() and checking its return > value. This may be due to copy-pasting from earlier code that performed > other operations before handling errors. > > Reported-by: Kevin Wolf > Signed-off-by: Stefan Hajnoczi > --- > blockdev.c | 15 --------------- > 1 file changed, 15 deletions(-) > > diff --git a/blockdev.c b/blockdev.c > index b9b2d10..01db519 100644 > --- a/blockdev.c > +++ b/blockdev.c > @@ -818,7 +818,6 @@ typedef struct ExternalSnapshotStates { > static void external_snapshot_prepare(BlkTransactionStates *common, > Error **errp) > { > - BlockDriver *proto_drv; > BlockDriver *drv; > int flags, ret; > Error *local_err = NULL; > @@ -874,12 +873,6 @@ static void external_snapshot_prepare(BlkTransactionStates *common, > > flags = states->old_bs->open_flags; > > - proto_drv = bdrv_find_protocol(new_image_file); > - if (!proto_drv) { > - error_set(errp, QERR_INVALID_BLOCK_FORMAT, format); > - return; > - } > - > /* create new image w/backing file */ > if (mode != NEW_IMAGE_MODE_EXISTING) { > bdrv_img_create(new_image_file, format, > @@ -1368,7 +1361,6 @@ void qmp_drive_mirror(const char *device, const char *target, > { > BlockDriverState *bs; > BlockDriverState *source, *target_bs; > - BlockDriver *proto_drv; > BlockDriver *drv = NULL; > Error *local_err = NULL; > int flags; > @@ -1436,12 +1428,6 @@ void qmp_drive_mirror(const char *device, const char *target, > sync = MIRROR_SYNC_MODE_FULL; > } > > - proto_drv = bdrv_find_protocol(target); > - if (!proto_drv) { > - error_set(errp, QERR_INVALID_BLOCK_FORMAT, format); > - return; > - } > - > bdrv_get_geometry(bs, &size); > size *= 512; > if (sync == MIRROR_SYNC_MODE_FULL && mode != NEW_IMAGE_MODE_EXISTING) { > @@ -1476,7 +1462,6 @@ void qmp_drive_mirror(const char *device, const char *target, > */ > target_bs = bdrv_new(""); > ret = bdrv_open(target_bs, target, NULL, flags | BDRV_O_NO_BACKING, drv); > - > if (ret < 0) { > bdrv_delete(target_bs); > error_set(errp, QERR_OPEN_FILE_FAILED, target); > Although it is not merged yet, I'll use it as pre-patches in my series which add internal snapshot support in qmp_transaction. Reviewed-by: Wenchao Xia -- Best Regards Wenchao Xia