[lvm-devel] [PATCH V2 0/2] Add thin lv and thin pool creation support

M. Mohan Kumar mohan at in.ibm.com
Fri Feb 1 05:36:23 UTC 2013


Zdenek Kabelac <zkabelac at redhat.com> writes:

> Dne 31.1.2013 22:04, Tony Asleson napsal(a):
>> On 01/31/2013 08:25 AM, M. Mohan Kumar wrote:
>>> From: "M. Mohan Kumar" <mohan at in.ibm.com>
>>>
>>> Add thin lv and thin pool creation support to lvm2app.
>>>
>>> Changes from previous version:
>>> * Add support to specify data block size and low water mark thresold for
>>> newly created thin pool.
>>> * Added support for specifying lowwatermark parameter to thin pool
>>> creation in lvcreate command
>>
>> OK, so the block size if specified as 0 results in a default value being
>> selected as before, which is what I believe we want.  The default low
>> water mark was 0, which is what we believe disables event creation.
>> This doesn't appear to be a safe default behavior?
>>
>> One option would be to change the type to a signed integer and change
>> the meaning from number of blocks free to percentage free and then treat
>> -1 as pick a sane default.  Thus 0 would be no events and 30 would
>> indicate when 30% blocks free is remaining to generate an event.  We
>> could also use an unsigned value and use 100 as please pick a sane
>> default as this value and values close to it really wouldn't make much
>> sense.
>>
>> Once we have defined what the default values are, I can modify my python
>> bindings patch to use these default values.
>>
>
>
Hi Zdenek,

> Currently the lowwatermark setting are unused by dm driver - since we
> need to first resolve policies.

dm-thin target checks for current free block vs low water threshold
blocks and sends dm event

dm-thin.c:alloc_data_block()
        if (free_blocks <= pool->low_water_blocks &&
        !pool->low_water_triggered) {
                DMWARN("%s: reached low water mark, sending event.",
                       dm_device_name(pool->pool_md));

And when I tested my api to create a thin pool & thin LV (with a certain
low water mark threshold) and when number of free blocks in that pool
reached lower than that thresold there was a event generated. I am
attaching part of my dmesg output here.
device-mapper: thin: 253:8: reached low water mark, sending event.

>
> Reason why they are not yet support (and dmeventd only does pooling) is,
> that we have to make sure during all activations, we are not starting thinpool
> which is past the threshold - and there are many ways how to deal with this state.
>
Thats right, but IMHO its not related to APIs for creating thin lv and
thin pool.

> Also - for now - there is no  per-pool  threshold setting -  IMHO this should 
> be improved - and it's the same problem lvm2 has with i.e. mirror/raid,
> where many setting are currently set only via  lvm.conf - while there is no 
> option for LV override - this should be probably resolved at global level.
>
IIUC this thresold is per pool setting as per the code that I pasted above.




More information about the lvm-devel mailing list