dm clone metadata: Track exact changes per transaction
authorNikos Tsironis <ntsironis@arrikto.com>
Wed, 4 Dec 2019 14:06:52 +0000 (16:06 +0200)
committerMike Snitzer <snitzer@redhat.com>
Thu, 5 Dec 2019 20:27:53 +0000 (15:27 -0500)
commite6a505f3f9fae572fb3ab3bc486e755ac9cef32c
tree8b2f6f9a3970094f008743b3883f9480cc45589b
parent474e559567fa631dea8fb8407ab1b6090c903755
dm clone metadata: Track exact changes per transaction

Extend struct dirty_map with a second bitmap which tracks the exact
regions that were hydrated during the current metadata transaction.

Moreover, fix __flush_dmap() to only commit the metadata of the regions
that were hydrated during the current transaction.

This is required by the following commits to fix a data corruption bug.

Fixes: 7431b7835f55 ("dm: add clone target")
Cc: stable@vger.kernel.org # v5.4+
Signed-off-by: Nikos Tsironis <ntsironis@arrikto.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-clone-metadata.c