[linux-lvm] libdm cannot swap names between two child volumes

Zdenek Kabelac zkabelac at redhat.com
Fri Jun 5 08:04:33 UTC 2015


Dne 5.6.2015 v 05:32 M.H. Tsai napsal(a):
> 2015-06-04 20:14 GMT+08:00 Zdenek Kabelac <zkabelac at redhat.com>:
>> Please provide  sequence of  'ioctl' where you think there is a bug.
>> (or disclose your code using libdm).
>
> Assume that there's a top-level LV "lv1",
> and two sub-LVs "lv1_child1" and "lv1_child2".
> The table of the top-level LV is "0 1234 my-target-type 253:1 253:2",
> as following:
>
> # dmsetup ls --tree
> vg1-lv1 (253:3)
>   ├─ vg1-lv1_child1 (253:1)
>   └─ vg1-lv2_child2 (253:2)


The problem with rename is -

you have device   'lv1'  you rename it to 'lv2' - yet
those who opened device with the name 'lv1' still thinks
the 'lv1' device exits.

So for safety reason before you 'reuse' any existing name in-use,
there should be 'deactivating' such device first - so there is no 'race' in 
name usage.

It's even possible we miss to track full history of active renamed device.

Since you get into strange scenarios when you start to count
with udev event handling and link generating here - it's getting nearly 
impossible to synchronize this properly...

Zdenek




More information about the linux-lvm mailing list