On Wed, 9 Sep 2009, Mike Snitzer wrote: > On Wed, Sep 09 2009 at 11:56am -0400, > Mike Snitzer <snitzer@xxxxxxxxxx> wrote: > > > On Wed, Sep 09 2009 at 11:47am -0400, > > Mikulas Patocka <mpatocka@xxxxxxxxxx> wrote: > > > > > Hi > > > > > > I found one bug in the userspace code --- start merging, then from the > > > other console deactivate the origin volume with lvchange -an, then wait > > > next 15 seconds for the next poll interval: > > > > > > the poll process will think that the merging finished, removing the > > > snapshot, leaving partially merged origin and causing data corruption: > > > > > > [slunicko:~]# lvconvert -M vg1/lv2_snap1 > > > Merging of volume lv2_snap1 started. > > > lv2: Merged: 13.1% > > > ( .... deactivate the volume from the other console ....) > > > lv2: Merged: -1.0% > > > Merge into logical volume lv2 finished. > > > Logical volume "snapshot4" successfully removed > > > > > > Maybe this bug was in my code too, I don't remember. > > > > Likely, considering I merely ported your LVM2 patches to the latest > > version. That said, I could've introduced this issue by missing > > something in the port. Regardless, I'll have a look at preventing the > > origin LV from being deactivated during a merge. > > Or more correctly: gracefully halt the merge and deactivate merging > snapshot along with the origin. Then on activation the merge should > just resume (in the background). > > Mike I'd patch _poll_merge_progress to return zero (instead of PROGRESS_FINISHED) if querying the lv failed (lv_snapshot_percent returned zero) --- that should terminate the polling process without updating anything. You can try it and test it. Mikulas -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel