block: fix spoiling all dirty bitmaps by mirror and migration
commitc4237dfa635900e4d1cdc6038d5efe3507f45f0c
authorVladimir Sementsov-Ogievskiy <vsementsov@parallels.com>
Thu, 27 Nov 2014 09:40:46 +0000 (27 12:40 +0300)
committerStefan Hajnoczi <stefanha@redhat.com>
Tue, 13 Jan 2015 11:47:56 +0000 (13 11:47 +0000)
tree7fc75bed155cc91b5164bf49cdf10f75017b814a
parenta06e43556e3faea22de4cce0da7a6f362d3ca9a6
block: fix spoiling all dirty bitmaps by mirror and migration

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 <vsementsov@parallels.com>
CC: John Snow <jsnow@redhat.com>
CC: Fam Zheng <famz@redhat.com>
CC: Denis V. Lunev <den@openvz.org>
CC: Stefan Hajnoczi <stefanha@redhat.com>
CC: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Message-id: 1417081246-3593-1-git-send-email-vsementsov@parallels.com
Signed-off-by: Max Reitz <mreitz@redhat.com>
block.c
block/mirror.c
include/block/block.h
migration/block.c