OSDN Git Service

qemu-img: Speed up comparing empty/zero images
authorFam Zheng <famz@redhat.com>
Wed, 13 Jan 2016 08:37:41 +0000 (16:37 +0800)
committerKevin Wolf <kwolf@redhat.com>
Wed, 20 Jan 2016 12:36:23 +0000 (13:36 +0100)
commit25ad8e6e95770d4f01844dc2542d861e73b174b2
treec7e471d5a4e33bca28c54353f5317afe6accd9fa
parent972b543c6b63579aee590b738d21af09f01569f7
qemu-img: Speed up comparing empty/zero images

Two empty raw files are always compared by actually reading data even if
there is no data, because BDRV_BLOCK_ZERO is considered "allocated" in
bdrv_is_allocated_above().  That is inefficient.

Use bdrv_get_block_status_above() for more information, and skip the
consecutive zero sectors.

This brings a huge speed up in comparing sparse/empty raw images:

    $ qemu-img create a 1G

    $ time ~/build/master/bin/qemu-img compare a a
    Images are identical.

    real    0m6.583s
    user    0m0.191s
    sys     0m6.367s

    $ time qemu-img compare a a
    Images are identical.

    real    0m0.033s
    user    0m0.003s
    sys     0m0.031s

Signed-off-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
qemu-img.c