[PATCH v3 0/4] qemu-img compare --stat

Vladimir Sementsov-Ogievskiy posted 4 patches 2 years, 6 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20211028102441.1878668-1-vsementsov@virtuozzo.com
Maintainers: Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>
docs/tools/qemu-img.rst                       |  30 +-
qemu-img.c                                    | 275 +++++++++++++++++-
qemu-img-cmds.hx                              |   4 +-
.../qemu-iotests/tests/qemu-img-compare-stat  |  88 ++++++
.../tests/qemu-img-compare-stat.out           | 106 +++++++
5 files changed, 485 insertions(+), 18 deletions(-)
create mode 100755 tests/qemu-iotests/tests/qemu-img-compare-stat
create mode 100644 tests/qemu-iotests/tests/qemu-img-compare-stat.out
[PATCH v3 0/4] qemu-img compare --stat
Posted by Vladimir Sementsov-Ogievskiy 2 years, 6 months ago
Hi all!

Recently we faced the following task:

Customer comes and say: incremental backup images are too fat. Does you
incremental backup works correct?

What to answer? We should check something. At least check that
incremental images doesn't store same data twice. And we don't have a
tool for it. I just wrote a simple python script to compare raw files
cluster-by-cluster. Then we've mounted the qcow2 images with help of
qemu-nbd, the resulting /dev/nbd* were compared and we proved that
incremental backups don't store same data.

But that leads to idea that some kind of that script would be good to
have at hand.

So, here is a new option for qemu-img compare, that is a lot more
powerful and effective than original script, and allows to compare and
calculate statistics, i.e. how many clusters differs, how many
clusters changed from unallocated to data, and so on.

For examples of output look at the test in patch 04.

v3:
qemu-img: implement compare --stat
  fix wording
  fix option numbers
  allocate ImgCmpStat dynamically
  fix exit statuses
  restrict using strict mode together with --stat

qemu-img: make --block-size optional for compare --stat
  fix wording

qemu-img: add --shallow option for qemu-img compare
  fix option number(rebase on previous fix)
  add Hanna's r-b

iotests: add qemu-img-compare-stat test
  add Hanna's r-b
  s/Agenda/Key/ in test output

Vladimir Sementsov-Ogievskiy (4):
  qemu-img: implement compare --stat
  qemu-img: make --block-size optional for compare --stat
  qemu-img: add --shallow option for qemu-img compare
  iotests: add qemu-img-compare-stat test

 docs/tools/qemu-img.rst                       |  30 +-
 qemu-img.c                                    | 275 +++++++++++++++++-
 qemu-img-cmds.hx                              |   4 +-
 .../qemu-iotests/tests/qemu-img-compare-stat  |  88 ++++++
 .../tests/qemu-img-compare-stat.out           | 106 +++++++
 5 files changed, 485 insertions(+), 18 deletions(-)
 create mode 100755 tests/qemu-iotests/tests/qemu-img-compare-stat
 create mode 100644 tests/qemu-iotests/tests/qemu-img-compare-stat.out

-- 
2.31.1