[linux-lvm] [PATCH v2] lvs: add -o lv_usable

heming.zhao heming.zhao at suse.com
Thu Sep 10 06:34:15 UTC 2020


On 9/10/20 1:17 AM, Zdenek Kabelac wrote:
> Dne 09. 09. 20 v 18:47 Zhao Heming napsal(a):
>> report LV is usable for upper layer.
>>
>> leave issues
>> - this patch doesn't contain dm table comparison. So if the disk
>>    is removed then re-inserted, but the re-inserted disk
>>    major:minor is changed, the code doesn't have ability to detect.
>> - raid10: removing any 2 disks will think as array broken.
>>
>> Signed-off-by: Zhao Heming <heming.zhao at suse.com>
>> ---
>> v2:
>> - remove dm table parsing code in _lv_is_usable()
>> - add new status bit NOT_USABLE_LV.
>>    note, I chose the first available bit 0x0000000080000000
>> - _lvusable_disp() uses lv_is_usable() to return usable status
>>
>      dm_list_iterate_items(lvseg, &lv->segments) {
>>           for (s = 0; s < lvseg->area_count; ++s) {
>>               if (seg_type(lvseg, s) == AREA_PV) {
>> -                if (is_missing_pv(seg_pv(lvseg, s)))
>> +                pv = seg_pv(lvseg, s);
>> +                if (!(pv->dev) && is_missing_pv(pv)) {
>>                       lv->status |= PARTIAL_LV;
>> +                    lv->status |= NOT_USABLE_LV;
>> +                }
>>               }
>>           }
>>       }
> 
> Hi
> 
> As it can be seen here - there is big intersection with meaning of
> PARTIAL_LV.
> 
> And the question is - what does it mean in the context of various segment
> types.
> 
> I believe we need to discuss with Heinz - whether we want to mark
> Raid LVs partial in case they are actually 'only leg-pertial' and should
> be actually activatable without partial activation  - which is ATM abused for this purpose.
> 
> ATM I'm not sure we want to introduce new flags, which has only slight
> deviation from current partial flag - which should deserve closer look
> of its meaning.
> 
> We'll try to find something with Heinz to agree with.
> 
Ok, wait for feedback from Heinz.

I agree with you. the PARTIAL_LV is more closer to the new bit NOT_USABLE_LV.
There is another bit MISSING_PV, which is set when pv is missing or the pv is not workable.

 From my understanding, we could reuse the PARTIAL_LV to show different meaning according to different context. For example, in raid env, the top layer LV will be set PARTIAL_LV when the raid array not usable (e.g. raid0 missing a disk). Other cases, within raid limit, top layer raid LV won't be set. if following the rule, there will no need to set the new bit NOT_USABLE_LV.

Heming





More information about the linux-lvm mailing list