[lvm-devel] [PATCH] Improve handling of inconsistent precommit metadata

Petr Rockai prockai at redhat.com
Sun Apr 10 21:19:55 UTC 2011


Hi,

working on RHBZ 651590 (failure to lock LV results in failure to repair
mirror after transient error), I have tracked the problem down to the
following sequence of events:

1) devices fail IO, triggering repair
2) dmeventd starts fixing up the mirror
3) during the downconversion, a new metadata version is written

--> the devices come back online here

4) the mirror device suspend/resume is called to update DM tables
5) during the suspend/resume cycle, *pre*-commit metadata is read;
   however, since the failed devices are now back online, we get back
   inconsistent set of precommit metadata and the whole operation fails

I am attaching a patch that relaxes the check that fails in step 5
above, namely by ignoring inconsistencies coming from PVs that are
marked MISSING.

The patch may fail to apply completely cleanly to current CVS, but it
should be good enough for review. I will check it in myself when
reviewed.

Yours,
   Petr

PS: There are couple more patches from me in the review backlog (most
importantly the vgreduce --removemissing --force refactor). If you have
a while, please do have a look.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: inconsistent-precommit-metadata.diff
Type: text/x-diff
Size: 6722 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/lvm-devel/attachments/20110410/036c13cf/attachment.bin>
-------------- next part --------------

-- 
id' Ash = Ash; id' Dust = Dust; id' _ = undefined


More information about the lvm-devel mailing list