[lvm-devel] Re: [PATCH 02/15] lvm-merge-metadata

Zdenek Kabelac zkabelac at redhat.com
Sun Nov 22 20:43:13 UTC 2009


Dne 21.11.2009 03:06, Mike Snitzer napsal(a):
> On Fri, Nov 20 2009 at  6:26pm -0500,
> Zdenek Kabelac <zkabelac at redhat.com> wrote:
> 
>> Dne 20.11.2009 23:35, Mike Snitzer napsal(a):
>>> From: Mikulas Patocka <mpatocka at redhat.com>
>>>
>>> Add 'SNAPSHOT_MERGE' lv_segment 'status' flag.
>>>
>>> Make 'merging_snapshot' pointer that points from the origin to the
>>> segment that represents the merging snapshot.
>>>
>>> Import/export 'merging_store' metadata.
>>>
>>> Do not allow creating snapshots while another snapshot is merging.
>>> Snapshot created in this state would certainly contain invalid data.
>>>
>>> diff --git a/lib/metadata/metadata-exported.h b/lib/metadata/metadata-exported.h
>>> index e9a3d5d..30073d3 100644
>>> --- a/lib/metadata/metadata-exported.h
>>> +++ b/lib/metadata/metadata-exported.h
>>> @@ -60,6 +60,7 @@
>>>  //#define ACTIVATE_EXCL		0x00100000U	/* LV - internal use only */
>>>  //#define PRECOMMITTED		0x00200000U	/* VG - internal use only */
>>>  #define CONVERTING		0x00400000U	/* LV */
>>> +#define SNAPSHOT_MERGE		0x00800000U	/* SEG */
>>>  
>>>  #define MISSING_PV              0x00800000U	/* PV */
>>
>> I think reusing these bitfields might lead to unexpected troubles.
> 
> Nice catch, surprised I missed that.
> 
> Looks like I'll go with:
> #define SNAPSHOT_MERGE          0x10000000U
> 

Yes - one small step for you :), but we run out-of-bits here - for replicator
I've tried to reduces bit usage just for 2 bits (instead of using separate bit
for  _rimage, _rlog, _slog, replicator-dev) - but together with crypto we are
out-of-space.

So either we might switch to 64bit status (simple) - or use some solution
based on function  calls instead of bit checks.

Zdenek




More information about the lvm-devel mailing list