From nobody Mon Feb 9 23:01:07 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1529377704260549.1018444945981; Mon, 18 Jun 2018 20:08:24 -0700 (PDT) Received: from localhost ([::1]:38904 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fV70H-0008KJ-FZ for importer@patchew.org; Mon, 18 Jun 2018 23:08:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46826) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fV5jH-0002pO-Sh for qemu-devel@nongnu.org; Mon, 18 Jun 2018 21:46:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fV5jG-0000Wv-T1 for qemu-devel@nongnu.org; Mon, 18 Jun 2018 21:46:43 -0400 Received: from mail-ot0-x229.google.com ([2607:f8b0:4003:c0f::229]:43681) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fV5jG-0000WU-Nq; Mon, 18 Jun 2018 21:46:42 -0400 Received: by mail-ot0-x229.google.com with SMTP id i19-v6so20745164otk.10; Mon, 18 Jun 2018 18:46:42 -0700 (PDT) Received: from localhost ([2600:1700:70:e488:b0ee:9bda:ee6f:91be]) by smtp.gmail.com with ESMTPSA id n3-v6sm7245066otk.38.2018.06.18.18.46.40 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Jun 2018 18:46:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=je34LTX4eMybtYjkeA2lMVpkRUFq8BJWpRwQTvDYGVQ=; b=TB+t0Urw56lsiQ72ixdQTcmVAMVeg2nPgYgY6iZY0G7V5xc3LkS5OlmdMEkWf8yIkT LIJi8fbRm7lP94sZSDuzkBq9XgG91BSGd+03jQjzrtk9a+Z2i8a/s6Nf5IamnTFadnmo qCWLhqfz4IyUCsh7uBdRxFMV8wJoYzJQCNHOzqA0ZaCSRMWyUmWw7cVrFXnPD09kQ0ok tHfV71Pj6NLzuKGCJuSjBzf/29oXO9nKOaahb+Vp/djEow7RGFnkXZdI19VHCp9A4utF sTcfj6sEOAZJW3gN36ygqmpn20T6z7UtCLJpxyaIZ04oTcOr0nuYpHipFZvptpBO+ZGl QxqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=je34LTX4eMybtYjkeA2lMVpkRUFq8BJWpRwQTvDYGVQ=; b=S5tiDSpYjpnn2r4gJEyJjoOYmIaVCn/U76WcnhCEQ8FAtH2LI1B6hX81Qxu2J/u0p4 7CKAp8TffwBlaRhGj2aWbEOR49oYCJA4Htfm3Qgf8OuAS0AK4M4chcDpUsDFUfdWD0SD yOftzrc1K8Vyjh+oLMyofZZpBUxrLbOhLhQOo1oXFXsQhsM9CickhlFoAJb2sKDoNTdG arKLHdntHLdkpuGHNS9DgieJXKT3ZyKRnJp+66F4ZIIv0rc/aEYFyGk9F9DWQ/uxLwHs KuhcXhW4dwGMWQydwfolq4tTIDjGxQSjWCcZuBAHJDkJS7zr33dqKJOj5f5Yy4OlU1la kjyw== X-Gm-Message-State: APt69E1wBKL7Oa/hauSKVS8JB0khLNOKY/95TP4OEGz/eYeij2Nd9rJA i2vyunIJk2s4Eu1hUOHIxzEm39/QJmc= X-Google-Smtp-Source: ADUXVKJqEu+6mfqmmgnhpPiA2CYRnisNzjhe0ILOJsc3XI3V+ueY/OD6MusaHRv9+iKdJLV1y61qyg== X-Received: by 2002:a9d:3163:: with SMTP id v32-v6mr9760445otd.363.1529372801606; Mon, 18 Jun 2018 18:46:41 -0700 (PDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Mon, 18 Jun 2018 20:42:36 -0500 Message-Id: <20180619014319.28272-71-mdroth@linux.vnet.ibm.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180619014319.28272-1-mdroth@linux.vnet.ibm.com> References: <20180619014319.28272-1-mdroth@linux.vnet.ibm.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4003:c0f::229 Subject: [Qemu-devel] [PATCH 070/113] qemu-img: Resolve relative backing paths in rebase X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-stable@nongnu.org, Max Reitz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Max Reitz Currently, rebase interprets a relative path for the new backing image as follows: (1) Open the new backing image with the given relative path (thus relative = to qemu-img's working directory). (2) Write it directly into the overlay's backing path field (thus relative to the overlay). If the overlay is not in qemu-img's working directory, both will be different interpretations, which may either lead to an error somewhere (either rebase fails because it cannot open the new backing image, or your overlay becomes unusable because its backing path does not point to a file), or, even worse, it may result in your rebase being performed for a different backing file than what your overlay will point to after the rebase. Fix this by interpreting the target backing path as relative to the overlay, like qemu-img does everywhere else. Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=3D1569835 Cc: qemu-stable@nongnu.org Signed-off-by: Max Reitz Message-id: 20180509182002.8044-2-mreitz@redhat.com Reviewed-by: Eric Blake Signed-off-by: Max Reitz (cherry picked from commit d16699b64671466b42079c45b89127aeea1ca565) Signed-off-by: Michael Roth --- qemu-img.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/qemu-img.c b/qemu-img.c index 68b375f998..03da42dae2 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -3190,6 +3190,9 @@ static int img_rebase(int argc, char **argv) } =20 if (out_baseimg[0]) { + const char *overlay_filename; + char *out_real_path; + options =3D qdict_new(); if (out_basefmt) { qdict_put_str(options, "driver", out_basefmt); @@ -3198,8 +3201,26 @@ static int img_rebase(int argc, char **argv) qdict_put_bool(options, BDRV_OPT_FORCE_SHARE, true); } =20 - blk_new_backing =3D blk_new_open(out_baseimg, NULL, + overlay_filename =3D bs->exact_filename[0] ? bs->exact_filename + : bs->filename; + out_real_path =3D g_malloc(PATH_MAX); + + bdrv_get_full_backing_filename_from_filename(overlay_filename, + out_baseimg, + out_real_path, + PATH_MAX, + &local_err); + if (local_err) { + error_reportf_err(local_err, + "Could not resolve backing filename: "); + ret =3D -1; + g_free(out_real_path); + goto out; + } + + blk_new_backing =3D blk_new_open(out_real_path, NULL, options, src_flags, &local_err); + g_free(out_real_path); if (!blk_new_backing) { error_reportf_err(local_err, "Could not open new backing file '%s': ", --=20 2.11.0