To be used soon. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> --- block/copy-before-write.h | 1 + block/copy-before-write.c | 11 +++++++++++ 2 files changed, 12 insertions(+)
diff --git a/block/copy-before-write.h b/block/copy-before-write.h index a7e286620c..5809ffc7d0 100644 --- a/block/copy-before-write.h +++ b/block/copy-before-write.h @@ -40,5 +40,6 @@ void bdrv_cbw_drop(BlockDriverState *bs); int cbw_snapshot_read_lock(BlockDriverState *bs, int64_t offset, int64_t bytes, const BlockReq **req, int64_t *pnum); void cbw_snapshot_read_unlock(BlockDriverState *bs, const BlockReq *req); +void cbw_snapshot_discard(BlockDriverState *bs, int64_t offset, int64_t bytes); #endif /* COPY_BEFORE_WRITE_H */ diff --git a/block/copy-before-write.c b/block/copy-before-write.c index a96131358e..a9fc8e34e9 100644 --- a/block/copy-before-write.c +++ b/block/copy-before-write.c @@ -103,6 +103,17 @@ void cbw_snapshot_read_unlock(BlockDriverState *bs, const BlockReq *req) drop_read_req(s, (BlockReq *)req); } +void cbw_snapshot_discard(BlockDriverState *bs, int64_t offset, int64_t bytes) +{ + BDRVCopyBeforeWriteState *s = bs->opaque; + + WITH_QEMU_LOCK_GUARD(&s->lock) { + bdrv_reset_dirty_bitmap(s->access_bitmap, offset, bytes); + } + + block_copy_reset(s->bcs, offset, bytes); +} + static coroutine_fn int cbw_co_preadv( BlockDriverState *bs, uint64_t offset, uint64_t bytes, QEMUIOVector *qiov, int flags) -- 2.29.2