All of lore.kernel.org
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: qemu-block@nongnu.org
Cc: qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>,
	Kevin Wolf <kwolf@redhat.com>, Alberto Garcia <berto@igalia.com>
Subject: [Qemu-devel] [PATCH v11 12/31] block: Add bdrv_make_absolute_filename()
Date: Sat,  6 Oct 2018 01:40:04 +0200	[thread overview]
Message-ID: <20181005234023.8104-13-mreitz@redhat.com> (raw)
In-Reply-To: <20181005234023.8104-1-mreitz@redhat.com>

This is a general function for making a filename that is relative to a
certain BDS absolute.

It calls bdrv_get_full_backing_filename_from_filename() for now, but
that will be changed in a follow-up patch.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
---
 block.c | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/block.c b/block.c
index 3b5896083c..6a346f6e5e 100644
--- a/block.c
+++ b/block.c
@@ -319,16 +319,29 @@ char *bdrv_get_full_backing_filename_from_filename(const char *backed,
     }
 }
 
-char *bdrv_get_full_backing_filename(BlockDriverState *bs, Error **errp)
+/*
+ * If @filename is empty or NULL, this function returns NULL without
+ * setting @errp.  In all other cases, NULL will only be returned with
+ * @errp set.
+ */
+static char *bdrv_make_absolute_filename(BlockDriverState *relative_to,
+                                         const char *filename, Error **errp)
 {
-    char *backed;
+    char *bs_filename;
 
-    bdrv_refresh_filename(bs);
+    bdrv_refresh_filename(relative_to);
+
+    bs_filename = relative_to->exact_filename[0]
+                      ? relative_to->exact_filename
+                      : relative_to->filename;
 
-    backed = bs->exact_filename[0] ? bs->exact_filename : bs->filename;
-    return bdrv_get_full_backing_filename_from_filename(backed,
-                                                        bs->backing_file,
-                                                        errp);
+    return bdrv_get_full_backing_filename_from_filename(bs_filename,
+                                                        filename ?: "", errp);
+}
+
+char *bdrv_get_full_backing_filename(BlockDriverState *bs, Error **errp)
+{
+    return bdrv_make_absolute_filename(bs, bs->backing_file, errp);
 }
 
 void bdrv_register(BlockDriver *bdrv)
-- 
2.17.1

  parent reply	other threads:[~2018-10-05 23:41 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-05 23:39 [Qemu-devel] [PATCH v11 00/31] block: Fix some filename generation issues Max Reitz
2018-10-05 23:39 ` [Qemu-devel] [PATCH v11 01/31] block: Use bdrv_refresh_filename() to pull Max Reitz
2018-11-15  3:00   ` Eric Blake
2018-10-05 23:39 ` [Qemu-devel] [PATCH v11 02/31] block: Use children list in bdrv_refresh_filename Max Reitz
2018-10-05 23:39 ` [Qemu-devel] [PATCH v11 03/31] block: Skip implicit nodes for filename info Max Reitz
2018-10-05 23:39 ` [Qemu-devel] [PATCH v11 04/31] block: Add BDS.auto_backing_file Max Reitz
2018-10-05 23:39 ` [Qemu-devel] [PATCH v11 05/31] block: Respect backing bs in bdrv_refresh_filename Max Reitz
2018-10-05 23:39 ` [Qemu-devel] [PATCH v11 06/31] iotests.py: Add filter_imgfmt() Max Reitz
2018-10-05 23:39 ` [Qemu-devel] [PATCH v11 07/31] iotests.py: Add node_info() Max Reitz
2018-10-08 19:34   ` [Qemu-devel] [Qemu-block] " John Snow
2018-10-08 19:57     ` Max Reitz
2018-10-08 19:59       ` John Snow
2018-10-08 20:18         ` Max Reitz
2018-10-09 12:14   ` [Qemu-devel] " Alberto Garcia
2018-11-15  2:56   ` Eric Blake
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 08/31] iotests: Add test for backing file overrides Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 09/31] block: Make path_combine() return the path Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 10/31] block: bdrv_get_full_backing_filename_from_...'s ret. val Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 11/31] block: bdrv_get_full_backing_filename's " Max Reitz
2018-10-05 23:40 ` Max Reitz [this message]
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 13/31] block: Fix bdrv_find_backing_image() Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 14/31] block: Add bdrv_dirname() Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 15/31] blkverify: Make bdrv_dirname() return NULL Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 16/31] quorum: " Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 17/31] block/nbd: " Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 18/31] block/nfs: Implement bdrv_dirname() Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 19/31] block: Use bdrv_dirname() for relative filenames Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 20/31] iotests: Add quorum case to test 110 Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 21/31] block: Add strong_runtime_opts to BlockDriver Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 22/31] block: Add BlockDriver.bdrv_gather_child_options Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 23/31] block: Generically refresh runtime options Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 24/31] block: Purify .bdrv_refresh_filename() Max Reitz
2018-10-11 13:50   ` Alberto Garcia
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 25/31] block: Do not copy exact_filename from format file Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 26/31] block/nvme: Fix bdrv_refresh_filename() Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 27/31] block/curl: Harmonize option defaults Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 28/31] block/curl: Implement bdrv_refresh_filename() Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 29/31] block/null: Generate filename even with latency-ns Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 30/31] block: BDS options may lack the "driver" option Max Reitz
2018-10-05 23:40 ` [Qemu-devel] [PATCH v11 31/31] iotests: Test json:{} filenames of internal BDSs Max Reitz
2018-10-11 14:03   ` Alberto Garcia

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181005234023.8104-13-mreitz@redhat.com \
    --to=mreitz@redhat.com \
    --cc=berto@igalia.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.