[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