[dm-devel] Merging for old snapshots
Mikulas Patocka
mpatocka at redhat.com
Tue Jul 7 15:15:46 UTC 2009
Hi
The last version of snapshot-merging patches is at
http://people.redhat.com/mpatocka/patches/kernel/merging/2.6.28/series.html
The patches that hasn't been accepted so far:
# Remove unused thread
dm-snapshot-remove-unused-thread.patch
--- there is no plan to use the thread for anything, remove it.
Section "# Various chunk size patches"
--- very small fixes or optimizations, fix some misbehavior in situations
that lvm never does (only visible if someone loads the table by hand).
# Fix the data coruption with different chunk sizes
dm-snapshot-rework-origin-write.patch
--- this is the first big patch (the merging stuff depends on it, so it is
compulsory to apply it). It fixes the data corruption with multiple
snapshots with different chunk sizes. It removes completely primary_pe
pointer and links between exceptions, because this logic is flawed by
design.
The logic of the patch: if there are multiple pending exceptions that
conflict with the bio, the bio is linked to any one of them. After the
pending exception completes, the bio is rechecked again (this is the
change from current behavior when bio is not reckecked) against remaining
pending exceptions and if another pending exception is found, the bio is
linked on it again ... and so on until there are no remaining exceptions,
at this point the bio is dispatched.
I have made a testcase for this bug:
http://people.redhat.com/mpatocka/testcases/testcase-different-chunksizes-data-corruption.c
It used to corrupt the data on some older kernel but it doesn't now (but
the bug is still present, just some timining have changed or it's because
I use different computer) --- you can examine it and tune it to reproduce
the bug again.
Once you get through this patch you can start with the merging patches.
Mikulas
More information about the dm-devel
mailing list