From nobody Sun Feb 8 12:37:55 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 (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1532377680146808.8523818802463; Mon, 23 Jul 2018 13:28:00 -0700 (PDT) Received: from localhost ([::1]:36377 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fhhQr-0000sw-GZ for importer@patchew.org; Mon, 23 Jul 2018 16:27:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40626) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fhhIB-0001MR-RV for qemu-devel@nongnu.org; Mon, 23 Jul 2018 16:18:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fhhI8-0002JZ-HQ for qemu-devel@nongnu.org; Mon, 23 Jul 2018 16:18:51 -0400 Received: from mail-oi0-x234.google.com ([2607:f8b0:4003:c06::234]:37377) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fhhI8-0002Il-BE; Mon, 23 Jul 2018 16:18:48 -0400 Received: by mail-oi0-x234.google.com with SMTP id k81-v6so3469461oib.4; Mon, 23 Jul 2018 13:18:48 -0700 (PDT) Received: from localhost (76-251-165-188.lightspeed.austtx.sbcglobal.net. [76.251.165.188]) by smtp.gmail.com with ESMTPSA id s142-v6sm8868851oie.48.2018.07.23.13.18.45 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 23 Jul 2018 13:18:46 -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=WwITfhk8KiOTFgv9FiELfz5lI90hgvziGAE5hDjMYFE=; b=Iq/LlohfDOQ1MFifJz7wuu6GOrak5uZW09bN/41wsgIcIUhviDX+BM+KXvO8s2YvEV lpLEn/ThFNyjY7dz/R6QsBJ7fWh236JElJP0DUplJyfDzCd2lgJbgMRJp4VPu4l+EUPY K4SqK128MJTzDjbKHRl/1TxUNXvqLMTphk/86r69VjcWBvs/9McEu2gXzfxkE3c6JGzT k2/bEU7XJIEGZJmUrOgewiyJhDNPlTaMm4YViD8X5itjn3TjfE7+Nv47F4HVtu0/LLQR oPv9XmdKNaa/ZUKINrp+l/MOIN2sZAYEGMIvxl4APSSJlBLrDdAE3N9fdFKXU94DtLEC ccIA== 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=WwITfhk8KiOTFgv9FiELfz5lI90hgvziGAE5hDjMYFE=; b=jCN2fx4j6UsVBb3/Jc8Sb0EuGffuULh+Pi2gex6V1bmg5E98n8HxfqGTF0Be/hq61u JoR7C4vakVBgWNuINqVVZju5nHL5aV6m6rp7G9oGEV/AuEmYyYZ7UKsn1hVKvICSLKqm UbXDRNDWlMux4HdK22SOQUglYKgKx99FxtWd7DFDo0UOveglgMWYwp2PsPQbsjTiZSRa xSXAg2wWWA4Pa9XRzzuvzc3tBSgFy8hCd9flY2t8fG8P6NBvCAGX/N0WyDKnANTKYTEq QM/KrMauQsMmB4aAPCdMoAhzHuKev+sR+b4G6Z8oO3r4UopuIS3mctIsJVPU4UwM57Ro u9OA== X-Gm-Message-State: AOUpUlEJV2odJ5CiFH+1iCadtCEoDPs/e5UqBiQbNQQwhpk+kui8ZCpj 4PDusj3zl4iNz/kY6mTyM+okJP7MCI0= X-Google-Smtp-Source: AAOMgpeifXvouXcwvhpnWA85VWAJOSIVqFjRARmZaDm3cccnULqE4kOLS1BWW7EIzHBtyoy/kw+kaA== X-Received: by 2002:aca:dad7:: with SMTP id r206-v6mr255350oig.271.1532377127145; Mon, 23 Jul 2018 13:18:47 -0700 (PDT) From: Michael Roth To: qemu-devel@nongnu.org Date: Mon, 23 Jul 2018 15:16:21 -0500 Message-Id: <20180723201748.25573-13-mdroth@linux.vnet.ibm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180723201748.25573-1-mdroth@linux.vnet.ibm.com> References: <20180723201748.25573-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:c06::234 Subject: [Qemu-devel] [PATCH 12/99] 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 855fa52514..15d457d6b8 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -3191,6 +3191,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); @@ -3199,8 +3202,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.17.1