mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-18 10:04:20 +03:00
f0be9ac904
The bug addressed by this patch manifested itself during testing by showing a mirror that never became 'in-sync' after creation. The bug is isolated to distributions that do not have support for openAIS checkpointing (i.e. > RHEL6, > F16). When a node joins a group that is managing a mirror log, the other machines in the group send it a checkpoint representing the current state of the bitmap. More than one machine can send a checkpoint, but only the initial one should be imported. Once the bitmap state has been imported from the initial checkpoint, operations (such as resync, mark, and clear operations) can begin. When subsequent checkpoints are allowed to be imported, it has the effect of erasing all the log operations between the initial checkpoint and the ones that follow. When cmirrord was updated to handle the absence of openAIS checkpointing (commit 62e38da133d9801cdf36b0f2aaec615ce14b9000), the new import_checkpoint() function failed to honor the 'no_read' parameter. This parameter was designed to avoid reading all but the initial checkpoint. Honoring this parameter has solved the issue of corrupting bitmap data with secondary checkpoints.