qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, stefanha@linux.vnet.ibm.com
Subject: [Qemu-devel] [PATCH 1.1 10/22] qemu-img: make "info" backing file output correct and easier to use
Date: Tue,  8 May 2012 16:51:50 +0200	[thread overview]
Message-ID: <1336488722-13120-11-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1336488722-13120-1-git-send-email-pbonzini@redhat.com>

qemu-img info should use the same logic as qemu when printing the
backing file path, or debugging becomes quite tricky.  We can also
simplify the output in case the backing file has an absolute path
or a protocol.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 block.c    |   19 +++++++++++--------
 block.h    |    2 ++
 qemu-img.c |   12 +++++++-----
 3 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/block.c b/block.c
index 2986998..af2ab4f 100644
--- a/block.c
+++ b/block.c
@@ -270,6 +270,15 @@ void path_combine(char *dest, int dest_size,
     }
 }
 
+void bdrv_get_full_backing_filename(BlockDriverState *bs, char *dest, size_t sz)
+{
+    if (bs->backing_file[0] == '\0' || path_has_protocol(bs->backing_file)) {
+        pstrcpy(dest, sz, bs->backing_file);
+    } else {
+        path_combine(dest, sz, bs->filename, bs->backing_file);
+    }
+}
+
 void bdrv_register(BlockDriver *bdrv)
 {
     /* Block drivers without coroutine functions need emulation */
@@ -796,14 +805,8 @@ int bdrv_open(BlockDriverState *bs, const char *filename, int flags,
         BlockDriver *back_drv = NULL;
 
         bs->backing_hd = bdrv_new("");
-
-        if (path_has_protocol(bs->backing_file)) {
-            pstrcpy(backing_filename, sizeof(backing_filename),
-                    bs->backing_file);
-        } else {
-            path_combine(backing_filename, sizeof(backing_filename),
-                         filename, bs->backing_file);
-        }
+        bdrv_get_full_backing_filename(bs, backing_filename,
+                                       sizeof(backing_filename));
 
         if (bs->backing_format[0] != '\0') {
             back_drv = bdrv_find_format(bs->backing_format);
diff --git a/block.h b/block.h
index f163e54..7408acc 100644
--- a/block.h
+++ b/block.h
@@ -303,6 +303,8 @@ int bdrv_get_info(BlockDriverState *bs, BlockDriverInfo *bdi);
 const char *bdrv_get_encrypted_filename(BlockDriverState *bs);
 void bdrv_get_backing_filename(BlockDriverState *bs,
                                char *filename, int filename_size);
+void bdrv_get_full_backing_filename(BlockDriverState *bs,
+                                    char *dest, size_t sz);
 int bdrv_can_snapshot(BlockDriverState *bs);
 int bdrv_is_snapshot(BlockDriverState *bs);
 BlockDriverState *bdrv_snapshots(void);
diff --git a/qemu-img.c b/qemu-img.c
index 0ae543c..5434ddc 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -1138,11 +1138,13 @@ static int img_info(int argc, char **argv)
     }
     bdrv_get_backing_filename(bs, backing_filename, sizeof(backing_filename));
     if (backing_filename[0] != '\0') {
-        path_combine(backing_filename2, sizeof(backing_filename2),
-                     filename, backing_filename);
-        printf("backing file: %s (actual path: %s)\n",
-               backing_filename,
-               backing_filename2);
+        bdrv_get_full_backing_filename(bs, backing_filename2,
+                                       sizeof(backing_filename2));
+        printf("backing file: %s", backing_filename);
+        if (strcmp(backing_filename, backing_filename2) != 0) {
+            printf(" (actual path: %s)", backing_filename2);
+        }
+        putchar('\n');
     }
     dump_snapshots(bs);
     bdrv_delete(bs);
-- 
1.7.10.1

  parent reply	other threads:[~2012-05-08 14:53 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-08 14:51 [Qemu-devel] [PATCH 1.1 00/22] Rebased queue of block patches Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 01/22] block: fix snapshot on QED Paolo Bonzini
2012-05-09 12:15   ` Kevin Wolf
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 02/22] block: another bdrv_append fix Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 03/22] block: do not reuse the backing file across bdrv_close/bdrv_open Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 04/22] block: fully delete bs->file when closing Paolo Bonzini
2012-05-09 12:22   ` Kevin Wolf
2012-05-09 12:59     ` Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 05/22] block: add block_job_sleep_ns Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 06/22] block: wait for job callback in block_job_cancel_sync Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 07/22] block: simplify path_is_absolute Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 08/22] block: protect path_has_protocol from filenames with colons Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 09/22] block: move field reset from bdrv_open_common to bdrv_close Paolo Bonzini
2012-05-08 14:51 ` Paolo Bonzini [this message]
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 11/22] qemu-io: correctly print non-integer values as decimals Paolo Bonzini
2012-05-09 12:46   ` Kevin Wolf
2012-05-09 12:48     ` Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 12/22] qemu-io: fix the alloc command Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 13/22] stream: fix sectors not allocated test Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 14/22] stream: add testcase for partial streaming Paolo Bonzini
2012-05-09 12:59   ` Kevin Wolf
2012-05-09 13:05     ` [Qemu-devel] [PATCH 1.1 v2 " Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 15/22] stream: pass new base image format to bdrv_change_backing_file Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 16/22] stream: fix HMP block_job_set_speed Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 17/22] stream: fix ratelimiting corner case Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 18/22] stream: do not copy unallocated sectors from the base Paolo Bonzini
2012-05-08 14:51 ` [Qemu-devel] [PATCH 1.1 19/22] block: implement is_allocated for raw Paolo Bonzini
2012-05-09 13:40   ` Kevin Wolf
2012-05-09 14:05     ` Paolo Bonzini
2012-05-09 14:10       ` Kevin Wolf
2012-05-09 14:24         ` Paolo Bonzini
2012-05-09 14:49           ` [Qemu-devel] [PATCH next v2 " Paolo Bonzini
2012-05-08 14:52 ` [Qemu-devel] [PATCH 1.1 20/22] stream: tweak usage of bdrv_co_is_allocated Paolo Bonzini
2012-05-08 14:52 ` [Qemu-devel] [PATCH 1.1 21/22] stream: move is_allocated_above to block.c Paolo Bonzini
2012-05-08 14:52 ` [Qemu-devel] [PATCH 1.1 22/22] stream: move rate limiting to a separate header file Paolo Bonzini
2012-05-09 13:52   ` Kevin Wolf
2012-05-09 14:09     ` [Qemu-devel] [PATCH 1.1 v2 " Paolo Bonzini

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=1336488722-13120-11-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@linux.vnet.ibm.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).