From nobody Tue Feb 10 08:03:27 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1603391535; cv=none; d=zohomail.com; s=zohoarc; b=lBs2afu81zgCvhNEdyE+yAE4sSFsA7DRCHajEnxqyoOh9XORaRBAp/OFAAl0GYBPk39wWRPKZJSXTii+/GQ4eUceVNULHn4S280+18TyDk3b+EVM/q852iCdgNYkLcKfhyqErjuZfh1cC0Sn4ZGb5REZU+Mng/4n+re7g6rO7PM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1603391535; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=Ht5ugLNlkW/c5Kg1w1A+g8ZAaxMv7aQ8b6ZrKm9t/7A=; b=U+zGFVb7XfNR02DaP9SnHT3t5GCO0vsqFonp3DA9VWp9jYfevhq3wh7Vim1HfTdREjIJsS+mVx7CEZnfn7z2ddeZ4/zlDIgLTNf5DIoF2UBATPzo66RIkWkUxWhXlR7mK+EbroXP6d6/O7fvClqG9CLqz4huLiUczrPysbaq/hw= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1603391535762803.4945323288723; Thu, 22 Oct 2020 11:32:15 -0700 (PDT) Received: from localhost ([::1]:52080 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVfNm-0006sa-J6 for importer@patchew.org; Thu, 22 Oct 2020 14:32:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48678) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVf6W-0000qG-5Y; Thu, 22 Oct 2020 14:14:28 -0400 Received: from relay.sw.ru ([185.231.240.75]:52080 helo=relay3.sw.ru) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVf6K-0001nj-EP; Thu, 22 Oct 2020 14:14:23 -0400 Received: from [172.16.25.136] (helo=localhost.sw.ru) by relay3.sw.ru with esmtp (Exim 4.94) (envelope-from ) id 1kVf5r-005dVw-Vk; Thu, 22 Oct 2020 21:13:43 +0300 To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, fam@euphon.net, stefanha@redhat.com, kwolf@redhat.com, mreitz@redhat.com, armbru@redhat.com, jsnow@redhat.com, eblake@redhat.com, den@openvz.org, vsementsov@virtuozzo.com, andrey.shinkevich@virtuozzo.com Subject: [PATCH v12 13/14] stream: skip filters when writing backing file name to QCOW2 header Date: Thu, 22 Oct 2020 21:13:42 +0300 Message-Id: <1603390423-980205-14-git-send-email-andrey.shinkevich@virtuozzo.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1603390423-980205-1-git-send-email-andrey.shinkevich@virtuozzo.com> References: <1603390423-980205-1-git-send-email-andrey.shinkevich@virtuozzo.com> Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=185.231.240.75; envelope-from=andrey.shinkevich@virtuozzo.com; helo=relay3.sw.ru X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/22 14:13:46 X-ACL-Warn: Detected OS = Linux 3.11 and newer [fuzzy] X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Reply-to: Andrey Shinkevich From: Andrey Shinkevich via Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Avoid writing a filter JSON file name and a filter format name to QCOW2 image when the backing file is changed after the block stream job. A user is still able to assign the 'backing-file' parameter for a block-stream job keeping in mind the possible issue mentioned above. If the user does not specify the 'backing-file' parameter, QEMU will assign it automatically. Signed-off-by: Andrey Shinkevich --- block/stream.c | 15 +++++++++++++-- blockdev.c | 9 ++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/block/stream.c b/block/stream.c index e0540ee..1ba74ab 100644 --- a/block/stream.c +++ b/block/stream.c @@ -65,6 +65,7 @@ static int stream_prepare(Job *job) BlockDriverState *bs =3D blk_bs(bjob->blk); BlockDriverState *unfiltered_bs =3D bdrv_skip_filters(bs); BlockDriverState *base =3D bdrv_filter_or_cow_bs(s->above_base); + BlockDriverState *base_unfiltered =3D NULL; Error *local_err =3D NULL; int ret =3D 0; =20 @@ -75,8 +76,18 @@ static int stream_prepare(Job *job) const char *base_id =3D NULL, *base_fmt =3D NULL; if (base) { base_id =3D s->backing_file_str; - if (base->drv) { - base_fmt =3D base->drv->format_name; + if (base_id) { + if (base->drv) { + base_fmt =3D base->drv->format_name; + } + } else { + base_unfiltered =3D bdrv_skip_filters(base); + if (base_unfiltered) { + base_id =3D base_unfiltered->filename; + if (base_unfiltered->drv) { + base_fmt =3D base_unfiltered->drv->format_name; + } + } } } bdrv_set_backing_hd(unfiltered_bs, base, &local_err); diff --git a/blockdev.c b/blockdev.c index c917625..0e9c783 100644 --- a/blockdev.c +++ b/blockdev.c @@ -2508,7 +2508,6 @@ void qmp_block_stream(bool has_job_id, const char *jo= b_id, const char *device, BlockDriverState *base_bs =3D NULL; AioContext *aio_context; Error *local_err =3D NULL; - const char *base_name =3D NULL; int job_flags =3D JOB_DEFAULT; =20 if (!has_on_error) { @@ -2536,7 +2535,6 @@ void qmp_block_stream(bool has_job_id, const char *jo= b_id, const char *device, goto out; } assert(bdrv_get_aio_context(base_bs) =3D=3D aio_context); - base_name =3D base; } =20 if (has_base_node) { @@ -2551,7 +2549,6 @@ void qmp_block_stream(bool has_job_id, const char *jo= b_id, const char *device, } assert(bdrv_get_aio_context(base_bs) =3D=3D aio_context); bdrv_refresh_filename(base_bs); - base_name =3D base_bs->filename; } =20 /* Check for op blockers in the whole chain between bs and base */ @@ -2571,9 +2568,6 @@ void qmp_block_stream(bool has_job_id, const char *jo= b_id, const char *device, goto out; } =20 - /* backing_file string overrides base bs filename */ - base_name =3D has_backing_file ? backing_file : base_name; - if (has_auto_finalize && !auto_finalize) { job_flags |=3D JOB_MANUAL_FINALIZE; } @@ -2581,7 +2575,8 @@ void qmp_block_stream(bool has_job_id, const char *jo= b_id, const char *device, job_flags |=3D JOB_MANUAL_DISMISS; } =20 - stream_start(has_job_id ? job_id : NULL, bs, base_bs, base_name, + stream_start(has_job_id ? job_id : NULL, bs, base_bs, + has_backing_file ? backing_file : NULL, job_flags, has_speed ? speed : 0, on_error, filter_node_name, &local_err); if (local_err) { --=20 1.8.3.1