[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 3/5] qcow2: Employ metadata overlap checks
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH v2 3/5] qcow2: Employ metadata overlap checks |
Date: |
Thu, 29 Aug 2013 11:18:20 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
Am 28.08.2013 um 16:55 hat Max Reitz geschrieben:
> The pre-write overlap check function is now called before most of the
> qcow2 writes (aborting it on collision or other error).
>
> Signed-off-by: Max Reitz <address@hidden>
> ---
> block/qcow2-cache.c | 17 +++++++++++++++++
> block/qcow2-cluster.c | 21 +++++++++++++++++++++
> block/qcow2-snapshot.c | 22 ++++++++++++++++++++++
> block/qcow2.c | 36 +++++++++++++++++++++++++++++++++++-
> 4 files changed, 95 insertions(+), 1 deletion(-)
> @@ -1753,10 +1779,18 @@ static int qcow2_save_vmstate(BlockDriverState *bs,
> QEMUIOVector *qiov,
> BDRVQcowState *s = bs->opaque;
> int growable = bs->growable;
> int ret;
> + int64_t offset = qcow2_vm_state_offset(s) + pos;
>
> BLKDBG_EVENT(bs->file, BLKDBG_VMSTATE_SAVE);
> bs->growable = 1;
> - ret = bdrv_pwritev(bs, qcow2_vm_state_offset(s) + pos, qiov);
> +
> + ret = qcow2_pre_write_overlap_check(bs, QCOW2_OL_DEFAULT, offset,
> + qiov->size);
> + if (ret < 0) {
> + return ret;
> + }
> +
> + ret = bdrv_pwritev(bs, offset, qiov);
> bs->growable = growable;
>
> return ret;
Sorry for not catching it in v1, this one is actually wrong. The
bdrv_pwritev() is against bs, not bs->file, so you would be comparing
virtual/guest offsets with physical/host offsets.
I think you can simply leave the check out here, the one in
qcow2_co_writev() should already do the right thing inside
bdrv_pwritev().
Kevin
- [Qemu-devel] [PATCH v2 0/5] qcow2: Add metadata overlap checks, Max Reitz, 2013/08/28
- [Qemu-devel] [PATCH v2 2/5] qcow2: Metadata overlap checks, Max Reitz, 2013/08/28
- [Qemu-devel] [PATCH v2 3/5] qcow2: Employ metadata overlap checks, Max Reitz, 2013/08/28
- Re: [Qemu-devel] [PATCH v2 3/5] qcow2: Employ metadata overlap checks,
Kevin Wolf <=
- [Qemu-devel] [PATCH v2 5/5] qemu-iotests: Overlapping cluster allocations, Max Reitz, 2013/08/28
- [Qemu-devel] [PATCH v2 4/5] qcow2: More complete consistency check, Max Reitz, 2013/08/28