[linux-lvm] blkid_wiping breaks snapshots

Zdenek Kabelac zkabelac at redhat.com
Mon Feb 10 12:20:12 UTC 2014


Dne 10.2.2014 10:30, Christian Hesse napsal(a):
> Zdenek Kabelac <zkabelac at redhat.com> on Mon, 2014/02/10 09:33:
>> Dne 8.2.2014 00:55, Christian Hesse napsal(a):
>>> Christian Hesse <list at eworm.de> on Sat, 2014/02/08 00:36:
>>>> Hello everybody,
>>>>
>>>> I think I nailed it down with git bisect. My first bad commit is:
>>>>
>>>> 75628f341ad38b68aae33eae0b5700be2a6e5769
>>>> configure: enable blkid_wiping by default if the blkid library is present
>>>>
>>>> Looks like this wipes data that is still needed... Building a package
>>>> with '--disable-blkid_wipe' now to verify on another system.
>>>
>>> Uh, this only helps part of...
>>>
>>> I changed my test setup and used writable snapshots. After that I got:
>>>
>>> WARNING: DM_snapshot_cow signature detected on /dev/cvg/snap-home at
>>> offset 0. Wipe it? [y/n]
>>>
>>> (see https://bbs.archlinux.org/viewtopic.php?id=176504 for another report)
>>>
>>> Looks like disabling blkid_wiping fixes this. My snapshot corruption still
>>> occurs though. :-/
>>> Bad thing about it is that the corruption does not occur reliable when
>>> doing simple tests in 'git bisect'... Out of ideas for now - Will go to
>>> bed now.
>>
>> Now this was helpful, I guess I think what is going on.
>
> Great! Waiting for patches then. :D
>
> I could provide some more information when needed:
>
> * This happens with read only snapshots only.
> * I could reproduce with commit eaa23d32732c9bc3dd4f948781b5764cf21d84ba
>    (wiping: add support for blkid wiping), so it was introduced there or
>    before.
>
> Should I investigate further or wait for something to test from you?

Is the patch bellow fixing your problem ?
(It's still not final - but should help)

Zdenek


diff --git a/tools/lvcreate.c b/tools/lvcreate.c
index 638a868..e8b1a7f 100644
--- a/tools/lvcreate.c
+++ b/tools/lvcreate.c
@@ -772,7 +772,7 @@ static int _read_activation_params(struct lvcreate_params *lp,
                                         LVM_READ | LVM_WRITE);

         /* Must not zero/wipe read only volume */
-       if (!(lp->permission & LVM_WRITE)) {
+       if (!lp->snapshot && !(lp->permission & LVM_WRITE)) {
                 lp->zero = 0;
                 lp->wipe_signatures = 0;
         }





More information about the linux-lvm mailing list