On 12/11/2014 09:17 AM, Vladimir Sementsov-Ogievskiy wrote:
Mirror and migration use dirty bitmaps for their purposes, and since commit [block: per caller dirty bitmap] they use their own bitmaps, not the global one. But they use old functions bdrv_set_dirty and bdrv_reset_dirty, which change all dirty bitmaps. Named dirty bitmaps series by Fam and Snow are affected: mirroring and migration will spoil all (not related to this mirroring or migration) named dirty bitmaps. This patch fixes this by adding bdrv_set_dirty_bitmap and bdrv_reset_dirty_bitmap, which change concrete bitmap. Also, to prevent such mistakes in future, old functions bdrv_(set,reset)_dirty are made static, for internal block usage. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@parallels.com> CC: John Snow <js...@redhat.com> CC: Fam Zheng <f...@redhat.com> CC: Denis V. Lunev <d...@openvz.org> CC: Stefan Hajnoczi <stefa...@redhat.com> CC: Kevin Wolf <kw...@redhat.com> --- block-migration.c | 5 +++-- block.c | 23 ++++++++++++++++++++--- block/mirror.c | 11 +++++++---- include/block/block.h | 6 ++++-- 4 files changed, 34 insertions(+), 11 deletions(-)
[snip] A version of this already went in upstream, so it can be dropped here now.