From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
To: qemu-block@nongnu.org
Cc: qemu-devel@nongnu.org, hreitz@redhat.com, kwolf@redhat.com,
nsoffer@redhat.com, eblake@redhat.com, jsnow@redhat.com,
vsementsov@virtuozzo.com, den@openvz.org,
nikita.lapshin@virtuozzo.com
Subject: [PATCH v2 3/4] qemu-img: add --shallow option for qemu-img compare
Date: Thu, 21 Oct 2021 12:12:35 +0200 [thread overview]
Message-ID: <20211021101236.1144824-4-vsementsov@virtuozzo.com> (raw)
In-Reply-To: <20211021101236.1144824-1-vsementsov@virtuozzo.com>
Allow compare only top images of backing chains. This is useful to
compare images with same backing file or to compare incremental images
from the chain of incremental backups with "--stat" option.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
docs/tools/qemu-img.rst | 9 ++++++++-
qemu-img.c | 8 ++++++--
qemu-img-cmds.hx | 4 ++--
3 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/docs/tools/qemu-img.rst b/docs/tools/qemu-img.rst
index 4b382ca2b0..4ae9543472 100644
--- a/docs/tools/qemu-img.rst
+++ b/docs/tools/qemu-img.rst
@@ -176,6 +176,13 @@ Parameters to compare subcommand:
- If both files don't specify cluster-size, use default of 64K
- If only one file specify cluster-size, just use it.
+.. option:: --shallow
+
+ This option prevents opening and comparing any backing files.
+ This is useful to compare images with same backing file or to compare
+ incremental images from the chain of incremental backups with
+ ``--stat`` option.
+
Parameters to convert subcommand:
.. program:: qemu-img-convert
@@ -395,7 +402,7 @@ Command description:
The rate limit for the commit process is specified by ``-r``.
-.. option:: compare [--object OBJECTDEF] [--image-opts] [-f FMT] [-F FMT] [-T SRC_CACHE] [-p] [-q] [-s] [-U] [--stat [--block-size BLOCK_SIZE]] FILENAME1 FILENAME2
+.. option:: compare [--object OBJECTDEF] [--image-opts] [-f FMT] [-F FMT] [-T SRC_CACHE] [-p] [-q] [-s] [-U] [--stat [--block-size BLOCK_SIZE]] [--shallow] FILENAME1 FILENAME2
Check if two images have the same content. You can compare images with
different format or settings.
diff --git a/qemu-img.c b/qemu-img.c
index 61e7f470bb..c9b5067353 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -85,6 +85,7 @@ enum {
OPTION_SKIP_BROKEN = 277,
OPTION_STAT = 277,
OPTION_BLOCK_SIZE = 278,
+ OPTION_SHALLOW = 279,
};
typedef enum OutputFormat {
@@ -1482,7 +1483,7 @@ static int img_compare(int argc, char **argv)
int64_t block_end;
int ret = 0; /* return value - 0 Ident, 1 Different, >1 Error */
bool progress = false, quiet = false, strict = false;
- int flags;
+ int flags = 0;
bool writethrough;
int64_t total_size;
int64_t offset = 0;
@@ -1504,6 +1505,7 @@ static int img_compare(int argc, char **argv)
{"force-share", no_argument, 0, 'U'},
{"stat", no_argument, 0, OPTION_STAT},
{"block-size", required_argument, 0, OPTION_BLOCK_SIZE},
+ {"shallow", no_argument, 0, OPTION_SHALLOW},
{0, 0, 0, 0}
};
c = getopt_long(argc, argv, ":hf:F:T:pqsU",
@@ -1569,6 +1571,9 @@ static int img_compare(int argc, char **argv)
exit(EXIT_SUCCESS);
}
break;
+ case OPTION_SHALLOW:
+ flags |= BDRV_O_NO_BACKING;
+ break;
}
}
@@ -1593,7 +1598,6 @@ static int img_compare(int argc, char **argv)
/* Initialize before goto out */
qemu_progress_init(progress, 2.0);
- flags = 0;
ret = bdrv_parse_cache_mode(cache, &flags, &writethrough);
if (ret < 0) {
error_report("Invalid source cache option: %s", cache);
diff --git a/qemu-img-cmds.hx b/qemu-img-cmds.hx
index 96a193eea8..6b164767fd 100644
--- a/qemu-img-cmds.hx
+++ b/qemu-img-cmds.hx
@@ -40,9 +40,9 @@ SRST
ERST
DEF("compare", img_compare,
- "compare [--object objectdef] [--image-opts] [-f fmt] [-F fmt] [-T src_cache] [-p] [-q] [-s] [-U] [--stat [--block-size BLOCK_SIZE]] filename1 filename2")
+ "compare [--object objectdef] [--image-opts] [-f fmt] [-F fmt] [-T src_cache] [-p] [-q] [-s] [-U] [--stat [--block-size BLOCK_SIZE]] [--shallow] filename1 filename2")
SRST
-.. option:: compare [--object OBJECTDEF] [--image-opts] [-f FMT] [-F FMT] [-T SRC_CACHE] [-p] [-q] [-s] [-U] [--stat [--block-size BLOCK_SIZE]] FILENAME1 FILENAME2
+.. option:: compare [--object OBJECTDEF] [--image-opts] [-f FMT] [-F FMT] [-T SRC_CACHE] [-p] [-q] [-s] [-U] [--stat [--block-size BLOCK_SIZE]] [--shallow] FILENAME1 FILENAME2
ERST
DEF("convert", img_convert,
--
2.31.1
next prev parent reply other threads:[~2021-10-21 10:16 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-21 10:12 [PATCH v2 0/4] qemu-img compare --stat Vladimir Sementsov-Ogievskiy
2021-10-21 10:12 ` [PATCH v2 1/4] qemu-img: implement " Vladimir Sementsov-Ogievskiy
2021-10-25 16:40 ` Hanna Reitz
2021-10-26 7:53 ` Vladimir Sementsov-Ogievskiy
2021-10-26 8:47 ` Hanna Reitz
2021-10-26 9:18 ` Vladimir Sementsov-Ogievskiy
2021-10-27 8:35 ` Hanna Reitz
2021-10-21 10:12 ` [PATCH v2 2/4] qemu-img: make --block-size optional for " Vladimir Sementsov-Ogievskiy
2021-10-26 8:07 ` Hanna Reitz
2021-10-28 10:04 ` Vladimir Sementsov-Ogievskiy
2021-10-21 10:12 ` Vladimir Sementsov-Ogievskiy [this message]
2021-10-26 8:11 ` [PATCH v2 3/4] qemu-img: add --shallow option for qemu-img compare Hanna Reitz
2021-10-21 10:12 ` [PATCH v2 4/4] iotests: add qemu-img-compare-stat test Vladimir Sementsov-Ogievskiy
2021-10-26 8:26 ` Hanna 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=20211021101236.1144824-4-vsementsov@virtuozzo.com \
--to=vsementsov@virtuozzo.com \
--cc=den@openvz.org \
--cc=eblake@redhat.com \
--cc=hreitz@redhat.com \
--cc=jsnow@redhat.com \
--cc=kwolf@redhat.com \
--cc=nikita.lapshin@virtuozzo.com \
--cc=nsoffer@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 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).