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>,
	Alberto Garcia <berto@igalia.com>, Eric Blake <eblake@redhat.com>,
	Kevin Wolf <kwolf@redhat.com>
Subject: [Qemu-devel] [PATCH 12/19] block: Fix bdrv_find_backing_image()
Date: Tue, 26 Apr 2016 23:32:11 +0200	[thread overview]
Message-ID: <1461706338-20219-13-git-send-email-mreitz@redhat.com> (raw)
In-Reply-To: <1461706338-20219-1-git-send-email-mreitz@redhat.com>

bdrv_find_backing_image() should use bdrv_get_full_backing_filename() or
bdrv_make_absolute_filename() instead of trying to do what those
functions do by itself.

path_combine_deprecated() can now be dropped, so let's do that.

Signed-off-by: Max Reitz <mreitz@redhat.com>
---
 block.c | 28 +++++++++++++---------------
 1 file changed, 13 insertions(+), 15 deletions(-)

diff --git a/block.c b/block.c
index 49dc2cb..6e89abd 100644
--- a/block.c
+++ b/block.c
@@ -192,15 +192,6 @@ char *path_combine(const char *base_path, const char *filename)
     return result;
 }
 
-static void path_combine_deprecated(char *dest, int dest_size,
-                                    const char *base_path,
-                                    const char *filename)
-{
-    char *combined = path_combine(base_path, filename);
-    pstrcpy(dest, dest_size, combined);
-    g_free(combined);
-}
-
 char *bdrv_get_full_backing_filename_from_filename(const char *backed,
                                                    const char *backing,
                                                    Error **errp)
@@ -3147,7 +3138,6 @@ BlockDriverState *bdrv_find_backing_image(BlockDriverState *bs,
 
     filename_full     = g_malloc(PATH_MAX);
     backing_file_full = g_malloc(PATH_MAX);
-    filename_tmp      = g_malloc(PATH_MAX);
 
     is_protocol = path_has_protocol(backing_file);
 
@@ -3163,22 +3153,31 @@ BlockDriverState *bdrv_find_backing_image(BlockDriverState *bs,
         } else {
             /* If not an absolute filename path, make it relative to the current
              * image's filename path */
-            path_combine_deprecated(filename_tmp, PATH_MAX, curr_bs->filename,
-                                    backing_file);
+            filename_tmp = bdrv_make_absolute_filename(curr_bs, backing_file,
+                                                       NULL);
+            if (!filename_tmp) {
+                continue;
+            }
 
             /* We are going to compare absolute pathnames */
             if (!realpath(filename_tmp, filename_full)) {
+                g_free(filename_tmp);
                 continue;
             }
+            g_free(filename_tmp);
 
             /* We need to make sure the backing filename we are comparing against
              * is relative to the current image filename (or absolute) */
-            path_combine_deprecated(filename_tmp, PATH_MAX, curr_bs->filename,
-                                    curr_bs->backing_file);
+            filename_tmp = bdrv_get_full_backing_filename(curr_bs, NULL);
+            if (!filename_tmp) {
+                continue;
+            }
 
             if (!realpath(filename_tmp, backing_file_full)) {
+                g_free(filename_tmp);
                 continue;
             }
+            g_free(filename_tmp);
 
             if (strcmp(backing_file_full, filename_full) == 0) {
                 retval = curr_bs->backing->bs;
@@ -3189,7 +3188,6 @@ BlockDriverState *bdrv_find_backing_image(BlockDriverState *bs,
 
     g_free(filename_full);
     g_free(backing_file_full);
-    g_free(filename_tmp);
     return retval;
 }
 
-- 
2.8.0

  parent reply	other threads:[~2016-04-26 21:32 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-26 21:31 [Qemu-devel] [PATCH 00/19] block: Fix some filename generation issues Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 01/19] block: Use children list in bdrv_refresh_filename Max Reitz
2016-04-27  0:36   ` Eric Blake
2016-05-31  7:35   ` Alberto Garcia
2016-04-26 21:32 ` [Qemu-devel] [PATCH 02/19] block: Add BDS.backing_overridden Max Reitz
2016-04-27  0:37   ` Eric Blake
2016-05-02 15:35   ` Kevin Wolf
2016-05-03 10:49     ` Max Reitz
2016-05-03 13:34       ` Kevin Wolf
2016-04-26 21:32 ` [Qemu-devel] [PATCH 03/19] block: Respect backing bs in bdrv_refresh_filename Max Reitz
2016-05-02 15:36   ` Kevin Wolf
2016-05-03 10:50     ` Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 04/19] block: Add bdrv_default_refresh_format_filename Max Reitz
2016-06-20 13:16   ` Alberto Garcia
2016-04-26 21:32 ` [Qemu-devel] [PATCH 05/19] block: Add bdrv_default_refresh_protocol_filename Max Reitz
2016-06-20 13:18   ` Alberto Garcia
2016-04-26 21:32 ` [Qemu-devel] [PATCH 06/19] block: Make bdrv_default_refresh_format_filename public Max Reitz
2016-05-02 15:36   ` Kevin Wolf
2016-05-03 11:19     ` Max Reitz
2016-05-03 13:31       ` Kevin Wolf
2016-05-03 13:48         ` Max Reitz
2016-05-03 14:34           ` Kevin Wolf
2016-05-03 14:52             ` Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 07/19] qcow2: Implement bdrv_refresh_filename() Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 08/19] block: Make path_combine() return the path Max Reitz
2016-06-20 13:44   ` Alberto Garcia
2016-04-26 21:32 ` [Qemu-devel] [PATCH 09/19] block: bdrv_get_full_backing_filename_from_...'s ret. val Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 10/19] block: bdrv_get_full_backing_filename's " Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 11/19] block: Add bdrv_make_absolute_filename() Max Reitz
2016-04-26 21:32 ` Max Reitz [this message]
2016-04-26 21:32 ` [Qemu-devel] [PATCH 13/19] block: Add bdrv_dirname() Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 14/19] blkverify: Make bdrv_dirname() return NULL Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 15/19] quorum: " Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 16/19] block/nbd: Implement bdrv_dirname() Max Reitz
2016-05-02 15:36   ` Kevin Wolf
2016-05-03 11:28     ` Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 17/19] block: Use bdrv_dirname() for relative filenames Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 18/19] block: Add 'base-directory' BDS option Max Reitz
2016-04-26 21:32 ` [Qemu-devel] [PATCH 19/19] iotests: Add quorum case to test 110 Max Reitz
2016-11-02 15:00 ` [Qemu-devel] [PATCH 00/19] block: Fix some filename generation issues Alberto Garcia
2016-11-02 15:05   ` Max Reitz

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=1461706338-20219-13-git-send-email-mreitz@redhat.com \
    --to=mreitz@redhat.com \
    --cc=berto@igalia.com \
    --cc=eblake@redhat.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.