From: "Benoît Canet" <benoit.canet@irqsave.net>
To: Max Reitz <mreitz@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v2 3/5] qcow2: Use qcow2_signal_corruption() for overlaps
Date: Mon, 8 Sep 2014 16:21:22 +0200 [thread overview]
Message-ID: <20140908142122.GE22582@irqsave.net> (raw)
In-Reply-To: <1409926039-29044-4-git-send-email-mreitz@redhat.com>
The Friday 05 Sep 2014 à 16:07:17 (+0200), Max Reitz wrote :
> Use the new function in case of a failed overlap check.
>
> This changes output in case of corruption, so adapt iotest 060's
> reference output accordingly.
>
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
> block/qcow2-refcount.c | 24 +++---------------------
> tests/qemu-iotests/060.out | 10 +++++-----
> 2 files changed, 8 insertions(+), 26 deletions(-)
>
> diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
> index 0bd75d2..b9d421e 100644
> --- a/block/qcow2-refcount.c
> +++ b/block/qcow2-refcount.c
> @@ -26,8 +26,6 @@
> #include "block/block_int.h"
> #include "block/qcow2.h"
> #include "qemu/range.h"
> -#include "qapi/qmp/types.h"
> -#include "qapi-event.h"
>
> static int64_t alloc_clusters_noref(BlockDriverState *bs, uint64_t size);
> static int QEMU_WARN_UNUSED_RESULT update_refcount(BlockDriverState *bs,
> @@ -1838,27 +1836,11 @@ int qcow2_pre_write_overlap_check(BlockDriverState *bs, int ign, int64_t offset,
> return ret;
> } else if (ret > 0) {
> int metadata_ol_bitnr = ffs(ret) - 1;
> - char *message;
> -
> assert(metadata_ol_bitnr < QCOW2_OL_MAX_BITNR);
>
> - fprintf(stderr, "qcow2: Preventing invalid write on metadata (overlaps "
> - "with %s); image marked as corrupt.\n",
> - metadata_ol_names[metadata_ol_bitnr]);
> - message = g_strdup_printf("Prevented %s overwrite",
> - metadata_ol_names[metadata_ol_bitnr]);
> - qapi_event_send_block_image_corrupted(bdrv_get_device_name(bs),
> - message,
> - true,
> - offset,
> - true,
> - size,
> - true,
> - &error_abort);
> - g_free(message);
> -
> - qcow2_mark_corrupt(bs);
> - bs->drv = NULL; /* make BDS unusable */
> + qcow2_signal_corruption(bs, true, offset, size, "Preventing invalid "
> + "write on metadata (overlaps with %s)",
> + metadata_ol_names[metadata_ol_bitnr]);
> return -EIO;
> }
>
> diff --git a/tests/qemu-iotests/060.out b/tests/qemu-iotests/060.out
> index c27c952..30806da 100644
> --- a/tests/qemu-iotests/060.out
> +++ b/tests/qemu-iotests/060.out
> @@ -8,7 +8,7 @@ ERROR cluster 3 refcount=1 reference=3
> 1 errors were found on the image.
> Data may be corrupted, or further writes to the image may corrupt it.
> incompatible_features 0x0
> -qcow2: Preventing invalid write on metadata (overlaps with active L1 table); image marked as corrupt.
> +qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with active L1 table); further corruption events will be suppressed
> write failed: Input/output error
> incompatible_features 0x2
> qemu-io: can't open device TEST_DIR/t.IMGFMT: IMGFMT: Image is corrupt; cannot be opened read/write
> @@ -24,7 +24,7 @@ ERROR cluster 2 refcount=1 reference=2
> 2 errors were found on the image.
> Data may be corrupted, or further writes to the image may corrupt it.
> incompatible_features 0x0
> -qcow2: Preventing invalid write on metadata (overlaps with refcount block); image marked as corrupt.
> +qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with refcount block); further corruption events will be suppressed
> write failed: Input/output error
> incompatible_features 0x2
> Repairing refcount block 0 refcount=2
> @@ -56,7 +56,7 @@ Data may be corrupted, or further writes to the image may corrupt it.
> 1 leaked clusters were found on the image.
> This means waste of disk space, but no harm to data.
> incompatible_features 0x0
> -qcow2: Preventing invalid write on metadata (overlaps with inactive L2 table); image marked as corrupt.
> +qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with inactive L2 table); further corruption events will be suppressed
> write failed: Input/output error
> incompatible_features 0x2
> Repairing cluster 4 refcount=1 reference=2
> @@ -88,7 +88,7 @@ wrote 65536/65536 bytes at offset 536870912
> 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> discard 65536/65536 bytes at offset 0
> 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -qcow2: Preventing invalid write on metadata (overlaps with active L2 table); image marked as corrupt.
> +qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with active L2 table); further corruption events will be suppressed
> blkdebug: Suspended request '0'
> write failed: Input/output error
> blkdebug: Resuming request '0'
> @@ -99,6 +99,6 @@ aio_write failed: No medium found
> Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
> wrote 65536/65536 bytes at offset 0
> 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
> -qcow2: Preventing invalid write on metadata (overlaps with qcow2_header); image marked as corrupt.
> +qcow2: Marking image as corrupt: Preventing invalid write on metadata (overlaps with qcow2_header); further corruption events will be suppressed
> write failed: Input/output error
> *** done
> --
> 2.1.0
>
>
Reviewed-by: Benoît Canet <benoit.canet@nodalink.com>
next prev parent reply other threads:[~2014-09-08 14:22 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-05 14:07 [Qemu-devel] [PATCH v2 0/5] qcow2: Check L1/L2/reftable entries for alignment Max Reitz
2014-09-05 14:07 ` [Qemu-devel] [PATCH v2 1/5] qapi/block: Add "fatal" to BLOCK_IMAGE_CORRUPTED Max Reitz
2014-09-05 14:29 ` Eric Blake
2014-09-05 14:40 ` Eric Blake
2014-09-05 14:47 ` Max Reitz
2014-09-05 14:51 ` Eric Blake
2014-09-05 14:53 ` Max Reitz
2014-09-08 14:01 ` Benoît Canet
2014-09-08 17:40 ` Max Reitz
2014-09-05 14:07 ` [Qemu-devel] [PATCH v2 2/5] qcow2: Add qcow2_signal_corruption() Max Reitz
2014-09-05 14:43 ` Eric Blake
2014-09-08 14:15 ` Benoît Canet
2014-09-05 14:07 ` [Qemu-devel] [PATCH v2 3/5] qcow2: Use qcow2_signal_corruption() for overlaps Max Reitz
2014-09-05 14:52 ` Eric Blake
2014-09-08 14:21 ` Benoît Canet [this message]
2014-09-05 14:07 ` [Qemu-devel] [PATCH v2 4/5] qcow2: Check L1/L2/reftable entries for alignment Max Reitz
2014-09-05 15:03 ` Eric Blake
2014-09-08 14:40 ` Benoît Canet
2014-09-08 17:47 ` Max Reitz
2014-09-08 18:03 ` Benoît Canet
2014-09-05 14:07 ` [Qemu-devel] [PATCH v2 5/5] iotests: Add more tests for qcow2 corruption Max Reitz
2014-09-05 15:09 ` Eric Blake
2014-09-16 13:48 ` [Qemu-devel] [PATCH v2 0/5] qcow2: Check L1/L2/reftable entries for alignment Stefan Hajnoczi
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=20140908142122.GE22582@irqsave.net \
--to=benoit.canet@irqsave.net \
--cc=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.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 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.