[lvm-devel] LVM2 ./WHATS_NEW daemons/dmeventd/plugins/lvm2 ...

Zdenek Kabelac zkabelac at redhat.com
Wed Apr 11 11:44:49 UTC 2012


Dne 11.4.2012 01:34, jbrassow at sourceware.org napsal(a):
> CVSROOT:	/cvs/lvm2
> Module name:	LVM2
> Changes by:	jbrassow at sourceware.org	2012-04-10 23:34:41
>
> Modified files:
> 	.              : WHATS_NEW
> 	daemons/dmeventd/plugins/lvm2: dmeventd_lvm.c
>
> Log message:
> 	Commit ID 46a75dedb4f6aa815a804f27cafbd3fd16a62011 consolidated code from the
> 	various dmeventd plug-ins into a new function called 'dmeventd_lvm2_command',
> 	but the new function did not strip off the "_mlog" extentions that the
> 	mirror plug-in had been doing.  This created bug 794904 - failure to replace
> 	devices in a redundant log.
> 	
> 	The test suite did catch this scenario because it performs repair tests (mainly)
> 	through the CLI and not dmeventd.  It's also not easy to test because the test
> 	itself will hang if the bug is encountered.
>
> Patches:
> http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.2375&r2=1.2376
> http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c.diff?cvsroot=lvm2&r1=1.8&r2=1.9
>
> --- LVM2/WHATS_NEW	2012/03/30 14:59:35	1.2375
> +++ LVM2/WHATS_NEW	2012/04/10 23:34:41	1.2376
> @@ -1,5 +1,6 @@
>   Version 2.02.96 -
>   ================================
> +  Fix ability to handle failures in mirrored log (regression intro 2.02.89).
>     Fix unlocking volume group in vgreduce in error path.
>     Exit immediately if LISTEN_PID env var incorrect during systemd handover.
>     Detect VG name being part of the LV name in lvconvert --splitmirrors -n.
> --- LVM2/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c	2012/02/01 20:11:58	1.8
> +++ LVM2/daemons/dmeventd/plugins/lvm2/dmeventd_lvm.c	2012/04/10 23:34:41	1.9
> @@ -160,6 +160,11 @@
>   		return 0;
>   	}
>
> +	/* strip off the mirror component designations */
> +	layer = strstr(lv, "_mlog");
> +	if (layer)
> +		*layer = '\0';
> +
>   	r = dm_snprintf(buffer, size, "%s %s/%s", cmd, vg, lv);
>
>   	dm_pool_free(mem, vg);

I think this fix is in wrong layer - you should probably do this inside liblvm 
which knows what should be monitored instead of this 'wild' stripping inside 
unrelated code in dmeventd lvm2 lib.

Zdenek




More information about the lvm-devel mailing list