From: Vladimir Sementsov-Ogievskiy Date: Fri, 20 Sep 2019 14:20:45 +0000 (+0300) Subject: block/backup: improve comment about image fleecing X-Git-Url: https://repo.jachan.dev/qemu.git/commitdiff_plain/372c67ea6146cfa4e886ee33191d48cb2df5e99c block/backup: improve comment about image fleecing Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Max Reitz Message-id: 20190920142056.12778-5-vsementsov@virtuozzo.com Signed-off-by: Max Reitz --- diff --git a/block/backup.c b/block/backup.c index 98d7f7a905..ae28849660 100644 --- a/block/backup.c +++ b/block/backup.c @@ -747,9 +747,18 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs, job->bitmap_mode = bitmap_mode; /* - * Set write flags: - * 1. Detect image-fleecing (and similar) schemes - * 2. Handle compression + * If source is in backing chain of target assume that target is going to be + * used for "image fleecing", i.e. it should represent a kind of snapshot of + * source at backup-start point in time. And target is going to be read by + * somebody (for example, used as NBD export) during backup job. + * + * In this case, we need to add BDRV_REQ_SERIALISING write flag to avoid + * intersection of backup writes and third party reads from target, + * otherwise reading from target we may occasionally read already updated by + * guest data. + * + * For more information see commit f8d59dfb40bb and test + * tests/qemu-iotests/222 */ job->write_flags = (bdrv_chain_contains(target, bs) ? BDRV_REQ_SERIALISING : 0) |