[lvm-devel] [PATCH] Change process_each_lv_in_vg() iterator to only process non-hidden LVs.

Milan Broz mbroz at redhat.com
Fri Oct 16 09:05:04 UTC 2009


On 10/15/2009 04:07 PM, Dave Wysochanski wrote:
> Unless the "--all" flag is given, the iterator functions should not be
> processing hidden LVs.  I have checked all the tools and this seems to
> be how they all behave.  Somehow before I missed the fact I could re-use
> the "--all" flag to qualify the hidden LV check (perhaps it's because
> the all flag is not documented well).  If there are things I've overlooked
> I can deal with them in another patch.  I am working on patches to clarify
> and document the usage of "--all".

Ack for the intention (see my previous patch) but nack to use of all_ARG :-)

We should really document --all first, missing in man pages
(lvs, lvdisplay, lvscan, pvs, pvdisplay, vgs)


> --- a/tools/toollib.c
> +++ b/tools/toollib.c
> @@ -122,6 +122,9 @@ int process_each_lv_in_vg(struct cmd_context *cmd,
>  		if (lvl->lv->status & SNAPSHOT)
>  			continue;
>  
> +		if (!lv_is_visible(lvl->lv) && !arg_count(cmd, all_ARG))
> +			continue;
> +

This function is used used in process_each_lv().

If you do this and command uses all_ARG, caller can activate hidden
volumes directly (see lvchange).

But you cannot remove hidden volumes now (see lvremove, it has no all arg).

I think that

 - not visible (hidden) volumes must be always be activated through some
visible LV or other operation
(I have special hidden keystore volume and I never want user to activate it
explicitly for example.)

 - we should allow user to remove hidden volume (if it is unreferenced),
(like hidden orphaned mirror log when something went wrong)

- also see my previous patch for vgchange, it should be cleaned similar way
(adding exceptions for every type of hidden volume is not ideal,
lv_is_visible() seems to be ok here)

Milan




More information about the lvm-devel mailing list