public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
* LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT ...
@ 2010-09-27 19:09 agk
  0 siblings, 0 replies; 13+ messages in thread
From: agk @ 2010-09-27 19:09 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2010-09-27 19:09:36

Modified files:
	.              : VERSION VERSION_DM WHATS_NEW WHATS_NEW_DM 
	                 make.tmpl.in 
	lib/config     : config.c config.h 
	lib/format_text: format-text.c 
	lib/label      : label.c 
	lib/misc       : crc.c crc.h 
Added files:
	lib/misc       : crc_gen.c 

Log message:
	Speed up CRC32 calculations by using a larger lookup table.
	
	Use -DDEBUG_CRC32 to revert to old function and check new one gives same result.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.255&r2=1.256
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION_DM.diff?cvsroot=lvm2&r1=1.64&r2=1.65
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1736&r2=1.1737
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.415&r2=1.416
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/make.tmpl.in.diff?cvsroot=lvm2&r1=1.110&r2=1.111
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/config/config.c.diff?cvsroot=lvm2&r1=1.80&r2=1.81
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/config/config.h.diff?cvsroot=lvm2&r1=1.30&r2=1.31
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/format_text/format-text.c.diff?cvsroot=lvm2&r1=1.144&r2=1.145
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/label/label.c.diff?cvsroot=lvm2&r1=1.50&r2=1.51
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/misc/crc_gen.c.diff?cvsroot=lvm2&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/misc/crc.c.diff?cvsroot=lvm2&r1=1.6&r2=1.7
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/misc/crc.h.diff?cvsroot=lvm2&r1=1.5&r2=1.6

--- LVM2/VERSION	2010/09/24 16:24:57	1.255
+++ LVM2/VERSION	2010/09/27 19:09:34	1.256
@@ -1 +1 @@
-2.02.74(2)-cvs (2010-09-24)
+2.02.75(2)-cvs (2010-09-24)
--- LVM2/VERSION_DM	2010/09/24 16:24:57	1.64
+++ LVM2/VERSION_DM	2010/09/27 19:09:34	1.65
@@ -1 +1 @@
-1.02.55-cvs (2010-09-24)
+1.02.56-cvs (2010-09-24)
--- LVM2/WHATS_NEW	2010/09/24 16:24:57	1.1736
+++ LVM2/WHATS_NEW	2010/09/27 19:09:34	1.1737
@@ -1,3 +1,7 @@
+Version 2.02.75 - 
+=====================================
+  Speed up CRC32 calculations by using a larger lookup table.
+
 Version 2.02.74 - 24th September 2010
 =====================================
   Allow : and @ to be escaped with \ in device names of PVs.
@@ -17,7 +21,7 @@
   Add configure --with-default-data-alignment.
   Update heuristic used for default and detected data alignment.
   Add "devices/default_data_alignment" to lvm.conf.
-  Add implmentation for simple numeric 'get' property functions.
+  Add implementation for simple numeric 'get' property functions.
   Define GET_NUM_PROPERTY_FN macro to simplify numeric property 'get' function
   Add properties.[ch] to lib/report using columns.h.
   Add macro definitions to report infrastructure for character array length.
--- LVM2/WHATS_NEW_DM	2010/09/24 16:24:57	1.415
+++ LVM2/WHATS_NEW_DM	2010/09/27 19:09:34	1.416
@@ -1,3 +1,6 @@
+Version 1.02.56 - 
+=====================================
+
 Version 1.02.55 - 24th September 2010
 =====================================
   Fix the way regions are marked complete to avoid slow --nosync cmirror I/O.
--- LVM2/make.tmpl.in	2010/08/16 17:49:26	1.110
+++ LVM2/make.tmpl.in	2010/09/27 19:09:34	1.111
@@ -113,6 +113,7 @@
 
 #CFLAGS += -W -Wconversion -Wpointer-arith -Wbad-function-cast -Wcast-qual
 #CFLAGS += -pedantic -std=gnu99
+#CFLAGS += -DDEBUG_CRC32
 
 CFLAGS += @COPTIMISE_FLAG@
 
--- LVM2/lib/config/config.c	2010/07/09 15:34:42	1.80
+++ LVM2/lib/config/config.c	2010/09/27 19:09:34	1.81
@@ -239,8 +239,8 @@
 	}
 
 	if (checksum_fn && checksum !=
-	    (checksum_fn(checksum_fn(INITIAL_CRC, p->fb, size),
-			 p->fb + size, size2))) {
+	    (checksum_fn(checksum_fn(INITIAL_CRC, (uint8_t *)p->fb, size),
+			 (uint8_t *)(p->fb + size), size2))) {
 		log_error("%s: Checksum error", dev_name(dev));
 		goto out;
 	}
--- LVM2/lib/config/config.h	2009/10/22 10:38:07	1.30
+++ LVM2/lib/config/config.h	2010/09/27 19:09:34	1.31
@@ -60,7 +60,7 @@
 				     const char *config_settings);
 void destroy_config_tree(struct config_tree *cft);
 
-typedef uint32_t (*checksum_fn_t) (uint32_t initial, const void *buf, uint32_t size);
+typedef uint32_t (*checksum_fn_t) (uint32_t initial, const uint8_t *buf, uint32_t size);
 
 int read_config_fd(struct config_tree *cft, struct device *dev,
 		   off_t offset, size_t size, off_t offset2, size_t size2,
--- LVM2/lib/format_text/format-text.c	2010/08/26 12:22:05	1.144
+++ LVM2/lib/format_text/format-text.c	2010/09/27 19:09:35	1.145
@@ -332,7 +332,7 @@
 	if (!dev_read(dev_area->dev, dev_area->start, MDA_HEADER_SIZE, mdah))
 		goto_bad;
 
-	if (mdah->checksum_xl != xlate32(calc_crc(INITIAL_CRC, mdah->magic,
+	if (mdah->checksum_xl != xlate32(calc_crc(INITIAL_CRC, (uint8_t *)mdah->magic,
 						  MDA_HEADER_SIZE -
 						  sizeof(mdah->checksum_xl)))) {
 		log_error("Incorrect metadata area header checksum on %s"
@@ -380,7 +380,7 @@
 	mdah->start = start_byte;
 
 	_xlate_mdah(mdah);
-	mdah->checksum_xl = xlate32(calc_crc(INITIAL_CRC, mdah->magic,
+	mdah->checksum_xl = xlate32(calc_crc(INITIAL_CRC, (uint8_t *)mdah->magic,
 					     MDA_HEADER_SIZE -
 					     sizeof(mdah->checksum_xl)));
 
@@ -650,12 +650,12 @@
 			goto_out;
 	}
 
-	mdac->rlocn.checksum = calc_crc(INITIAL_CRC, fidtc->raw_metadata_buf,
+	mdac->rlocn.checksum = calc_crc(INITIAL_CRC, (uint8_t *)fidtc->raw_metadata_buf,
 					(uint32_t) (mdac->rlocn.size -
 						    new_wrap));
 	if (new_wrap)
 		mdac->rlocn.checksum = calc_crc(mdac->rlocn.checksum,
-						fidtc->raw_metadata_buf +
+						(uint8_t *)fidtc->raw_metadata_buf +
 						mdac->rlocn.size -
 						new_wrap, (uint32_t) new_wrap);
 
--- LVM2/lib/label/label.c	2010/07/09 15:34:44	1.50
+++ LVM2/lib/label/label.c	2010/09/27 19:09:35	1.51
@@ -142,8 +142,8 @@
 					 sector + scan_sector);
 				continue;
 			}
-			if (calc_crc(INITIAL_CRC, &lh->offset_xl, LABEL_SIZE -
-				     ((uintptr_t) &lh->offset_xl - (uintptr_t) lh)) !=
+			if (calc_crc(INITIAL_CRC, (uint8_t *)&lh->offset_xl, LABEL_SIZE -
+				     ((uint8_t *) &lh->offset_xl - (uint8_t *) lh)) !=
 			    xlate32(lh->crc_xl)) {
 				log_info("Label checksum incorrect on %s - "
 					 "ignoring", dev_name(dev));
@@ -323,8 +323,8 @@
 	if (!(label->labeller->ops->write)(label, buf))
 		return_0;
 
-	lh->crc_xl = xlate32(calc_crc(INITIAL_CRC, &lh->offset_xl, LABEL_SIZE -
-				      ((uintptr_t) &lh->offset_xl - (uintptr_t) lh)));
+	lh->crc_xl = xlate32(calc_crc(INITIAL_CRC, (uint8_t *)&lh->offset_xl, LABEL_SIZE -
+				      ((uint8_t *) &lh->offset_xl - (uint8_t *) lh)));
 
 	if (!dev_open(dev))
 		return_0;
/cvs/lvm2/LVM2/lib/misc/crc_gen.c,v  -->  standard output
revision 1.1
--- LVM2/lib/misc/crc_gen.c
+++ -	2010-09-27 19:09:39.765327000 +0000
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2010 Red Hat, Inc. All rights reserved.
+ *
+ * This file is part of LVM2.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License v.2.1.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+/*
+ * Helper program to generate table included in crc.c.
+ */
+#include "lib.h"
+
+int main(int argc, char **argv)
+{
+	uint32_t crc, i, j;
+
+	printf("\t/* CRC-32 byte lookup table generated by crcgen.c */\n");
+	printf("\tstatic const uint32_t crctab[] = {");
+
+	for (i = 0; i < 256; i++) {
+		crc = i;
+		for (j = 0; j < 8; j++) {
+			if (crc & 1)
+				crc = 0xedb88320L ^ (crc >> 1);
+			else
+				crc = crc >> 1;
+		}
+
+		if (i % 8)
+			printf(" ");
+		else
+			printf("\n\t\t");
+
+		printf("0x%08.8x,", crc);
+	}
+
+	printf("\n\t};\n");
+
+	return 0;
+}
--- LVM2/lib/misc/crc.c	2008/01/30 14:00:00	1.6
+++ LVM2/lib/misc/crc.c	2010/09/27 19:09:35	1.7
@@ -18,7 +18,73 @@
 #include "crc.h"
 
 /* Calculate an endian-independent CRC of supplied buffer */
-uint32_t calc_crc(uint32_t initial, const void *buf, uint32_t size)
+#ifndef DEBUG_CRC32
+uint32_t calc_crc(uint32_t initial, const uint8_t *buf, uint32_t size)
+#else
+static uint32_t _calc_crc_new(uint32_t initial, const uint8_t *buf, uint32_t size)
+#endif
+{
+	/* CRC-32 byte lookup table generated by crcgen.c */
+	static const uint32_t crctab[] = {
+		0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
+		0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
+		0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+		0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
+		0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+		0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+		0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
+		0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
+		0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+		0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+		0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
+		0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+		0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
+		0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
+		0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+		0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
+		0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
+		0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
+		0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
+		0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
+		0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+		0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
+		0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
+		0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+		0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
+		0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
+		0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+		0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
+		0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
+		0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+		0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
+		0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
+	};
+	uint32_t *start = (uint32_t *) buf;
+	uint32_t *end = (uint32_t *) (buf + (size & 0xfffffffc));
+	uint32_t crc = initial;
+   
+	/* Process 4 bytes per iteration */
+	while (start < end) {
+		crc = crc ^ *start++;
+		crc = crctab[crc & 0xff] ^ crc >> 8;
+		crc = crctab[crc & 0xff] ^ crc >> 8;
+		crc = crctab[crc & 0xff] ^ crc >> 8;
+		crc = crctab[crc & 0xff] ^ crc >> 8;
+	}
+
+	/* Process any bytes left over */
+	buf = (uint8_t *) start;
+	size = size & 0x3;
+	while (size--) {
+		crc = crc ^ *buf++;
+		crc = crctab[crc & 0xff] ^ crc >> 8;
+	}
+
+	return crc;
+}
+
+#ifdef DEBUG_CRC32
+static uint32_t _calc_crc_old(uint32_t initial, const uint8_t *buf, uint32_t size)
 {
 	static const uint32_t crctab[] = {
 		0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac,
@@ -27,12 +93,24 @@
 		0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c
 	};
 	uint32_t i, crc = initial;
-	const uint8_t *data = (const uint8_t *) buf;
 
 	for (i = 0; i < size; i++) {
-		crc ^= *data++;
+		crc ^= *buf++;
 		crc = (crc >> 4) ^ crctab[crc & 0xf];
 		crc = (crc >> 4) ^ crctab[crc & 0xf];
 	}
 	return crc;
 }
+
+uint32_t calc_crc(uint32_t initial, const uint8_t *buf, uint32_t size)
+{
+	uint32_t new_crc = _calc_crc_new(initial, buf, size);
+	uint32_t old_crc = _calc_crc_old(initial, buf, size);
+
+	if (new_crc != old_crc)
+		log_error(INTERNAL_ERROR "Old and new crc32 algorithms mismatch: 0x%08x != 0x%08x", old_crc, new_crc);
+
+	return old_crc;
+}
+
+#endif /* DEBUG_CRC32 */
--- LVM2/lib/misc/crc.h	2007/08/20 20:55:27	1.5
+++ LVM2/lib/misc/crc.h	2010/09/27 19:09:36	1.6
@@ -18,6 +18,6 @@
 
 #define INITIAL_CRC 0xf597a6cf
 
-uint32_t calc_crc(uint32_t initial, const void *buf, uint32_t size);
+uint32_t calc_crc(uint32_t initial, const uint8_t *buf, uint32_t size);
 
 #endif


^ permalink raw reply	[flat|nested] 13+ messages in thread

* LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT ...
@ 2011-02-04 22:07 agk
  0 siblings, 0 replies; 13+ messages in thread
From: agk @ 2011-02-04 22:07 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2011-02-04 22:07:44

Modified files:
	.              : VERSION VERSION_DM WHATS_NEW WHATS_NEW_DM 
	lib/activate   : fs.c 
	libdm          : libdm-common.c 

Log message:
	pre-release

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.272&r2=1.273
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION_DM.diff?cvsroot=lvm2&r1=1.79&r2=1.80
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1906&r2=1.1907
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.441&r2=1.442
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/fs.c.diff?cvsroot=lvm2&r1=1.59&r2=1.60
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/libdm-common.c.diff?cvsroot=lvm2&r1=1.109&r2=1.110

--- LVM2/VERSION	2011/01/24 23:34:46	1.272
+++ LVM2/VERSION	2011/02/04 22:07:43	1.273
@@ -1 +1 @@
-2.02.83(2)-cvs (2011-01-24)
+2.02.83(2)-cvs (2011-02-04)
--- LVM2/VERSION_DM	2011/01/24 23:24:06	1.79
+++ LVM2/VERSION_DM	2011/02/04 22:07:43	1.80
@@ -1 +1 @@
-1.02.62-cvs (2011-01-24)
+1.02.62-cvs (2011-02-04)
--- LVM2/WHATS_NEW	2011/02/04 20:30:17	1.1906
+++ LVM2/WHATS_NEW	2011/02/04 22:07:43	1.1907
@@ -1,9 +1,9 @@
-Version 2.02.83 - 
+Version 2.02.83 - 4th February 2011
 ===================================
   Allow exclusive activation of snapshots in a cluster.
-  Add --addnodeonresume, --addnodeoncreate options for dmsetup create.
-  Use cluster-wide message to request device name sync.
-  Fix operation node stacking for consecutive dm ops.
+  Leave EX lock unchanged when suspending a device in clvmd.
+  Use sync_dev_names in unlock_vg macro for cluster-wide dev name sync.
+  Fix fs operation stack handling when multiple operations on same device.
   Increase hash table size to 1024 lv names and 64 pv uuids.
   Remove fs_unlock() from lv_resume path.
   Fix wipe size when setting up mda.
@@ -12,10 +12,10 @@
   Allow CLVMD_CMD_SYNC_NAMES to be propagated around the cluster if requested.
   Add "dmsetup ls --tree" output to lvmdump.
   Fix udev synchronization with no-locking --sysinit (2.02.80).
-  Updating man pages for pvcreate, pvremove, pvresize, pvscan.
+  Improve man page style consistency for pvcreate, pvremove, pvresize, pvscan.
   Avoid rebuilding of uuid validation table.
+  Improve lvcreate error text from insufficient "extents" to "free space".
   Always use O_DIRECT when opening block devices to check for partitioning.
-  Improve lvcreate "insufficient extents" errors to "insufficient free space".
 
 Version 2.02.82 - 24th January 2011
 ===================================
--- LVM2/WHATS_NEW_DM	2011/02/04 16:08:11	1.441
+++ LVM2/WHATS_NEW_DM	2011/02/04 22:07:44	1.442
@@ -1,8 +1,12 @@
-Version 1.02.62 - 
+Version 1.02.62 - 4th February 2011
 ===================================
+  Add --addnodeonresume and --addnodeoncreate options to dmsetup.
+  Add dm_task_set_add_node to libdevmapper to control dev node creation time.
   Add dm_task_secure_data to libdevmapper to wipe ioctl buffers in kernel.
+  Log debug message when expected uevent is not generated.
+  Only compile memory debugging code when DEBUG_MEM is set.
   Set DM_UDEV_DISABLE_OTHER_RULES_FLAG for suspended DM devices in udev rules.
-  Initialize pool object for each row in _output_as_rows().
+  Begin a new pool object for each row in _output_as_rows() correctly.
 
 Version 1.02.61 - 10th January 2011
 ===================================
--- LVM2/lib/activate/fs.c	2011/02/04 19:14:40	1.59
+++ LVM2/lib/activate/fs.c	2011/02/04 22:07:44	1.60
@@ -284,7 +284,8 @@
 
 		if (!_mk_link(dev_dir, vg_name, lv_name, dev, check_udev))
 			stack;
-	default:;
+	default:
+		; /* NOTREACHED */
 	}
 
 	return 1;
@@ -367,7 +368,7 @@
 	else if ((type == FS_ADD) && _count_fs_ops[FS_DEL] && _check_udev(check_udev))
 		/*
 		 * If udev is running ignore previous DEL operation on added fs_op.
-		 * (No other operations for this device then DEL could be staked here).
+		 * (No other operations for this device then DEL could be stacked here).
 		 */
 		dm_list_iterate_safe(fsph, fspht, &_fs_ops) {
 			fsp = dm_list_item(fsph, struct fs_op_parms);
--- LVM2/libdm/libdm-common.c	2011/02/04 19:14:40	1.109
+++ LVM2/libdm/libdm-common.c	2011/02/04 22:07:44	1.110
@@ -745,7 +745,8 @@
 	case NODE_READ_AHEAD:
 		return _set_dev_node_read_ahead(dev_name, read_ahead,
 						read_ahead_flags);
-	default:;
+	default:
+		; /* NOTREACHED */
 	}
 
 	return 1;
@@ -830,7 +831,7 @@
 	else if ((type == NODE_ADD) && _count_node_ops[NODE_DEL] && _check_udev(check_udev))
 		/*
 		 * If udev is running ignore previous DEL operation on added node.
-		 * (No other operations for this device then DEL could be staked here).
+		 * (No other operations for this device then DEL could be stacked here).
 		 */
 		dm_list_iterate_safe(noph, nopht, &_node_ops) {
 			nop = dm_list_item(noph, struct node_op_parms);


^ permalink raw reply	[flat|nested] 13+ messages in thread

* LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT ...
@ 2010-11-08 19:37 agk
  0 siblings, 0 replies; 13+ messages in thread
From: agk @ 2010-11-08 19:37 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2010-11-08 19:37:41

Modified files:
	.              : VERSION VERSION_DM WHATS_NEW WHATS_NEW_DM 
	daemons/clvmd  : clvmd.c 

Log message:
	pre-release

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.258&r2=1.259
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION_DM.diff?cvsroot=lvm2&r1=1.67&r2=1.68
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1789&r2=1.1790
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.421&r2=1.422
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/daemons/clvmd/clvmd.c.diff?cvsroot=lvm2&r1=1.82&r2=1.83

--- LVM2/VERSION	2010/10/25 16:38:20	1.258
+++ LVM2/VERSION	2010/11/08 19:37:40	1.259
@@ -1 +1 @@
-2.02.76(2)-cvs (2010-10-25)
+2.02.76(2)-cvs (2010-11-08)
--- LVM2/VERSION_DM	2010/10/25 16:38:20	1.67
+++ LVM2/VERSION_DM	2010/11/08 19:37:40	1.68
@@ -1 +1 @@
-1.02.57-cvs (2010-10-25)
+1.02.57-cvs (2010-11-08)
--- LVM2/WHATS_NEW	2010/11/05 18:18:11	1.1789
+++ LVM2/WHATS_NEW	2010/11/08 19:37:40	1.1790
@@ -1,16 +1,16 @@
-Version 2.02.76 - 
+Version 2.02.76 - 8th November 2010
 ===================================
   Clarify error messages when activation fails due to activation filter use.
-  Add initial script VolumeGroup.ocf for pacemaker support.
-  Fix regex optimiser not to ignore RHS of OR nodes in _find_leftmost_common.
+  Add pacemaker script VolumeGroup.ocf with configure --enable-ocf.
+  Import make.tmpl into include/ Makefile.
   Fix handling of online filesystem resize (using new fsadm return code).
   Add DIAGNOSTICS section to fsadm man page.
   Modify fsadm to return different status code for check of mounted filesystem.
   Update VG metadata only once in vgchange when making multiple changes.
   Allow independent vgchange arguments to be used together.
   Automatically unmount invalidated snapshots in dmeventd.
+  Suppress some superfluous messages from clang static analysis.
   Fix a deadlock caused by double close in clvmd.
-  Add dmeventd -R to restart dmeventd without losing monitoring state. (2.02.75)
   Fix NULL pointer dereference on too-large MDA error path in _vg_read_raw_area.
   Use static for internal _align_chunk() and _new_chunk() from pool-fast.c.
   Fix vgchange to process -a, --refresh, --monitor and --poll like lvchange.
--- LVM2/WHATS_NEW_DM	2010/11/01 13:31:55	1.421
+++ LVM2/WHATS_NEW_DM	2010/11/08 19:37:40	1.422
@@ -1,5 +1,7 @@
-Version 1.02.57
+Version 1.02.57 - 8th November 2010
 ===================================
+  Fix regex optimiser not to ignore RHS of OR nodes in _find_leftmost_common.
+  Add dmeventd -R to restart dmeventd without losing monitoring state. (1.02.56)
   Fix memory leak of field_id in _output_field function.
   Allocate buffer for reporting functions dynamically to support long outputs.
 
--- LVM2/daemons/clvmd/clvmd.c	2010/10/27 11:40:14	1.82
+++ LVM2/daemons/clvmd/clvmd.c	2010/11/08 19:37:41	1.83
@@ -184,8 +184,12 @@
 	        write(child_pipe[1], &status, sizeof(status));
 		close(child_pipe[1]);
 	}
-	if (status)
-	        exit(status);
+}
+
+static __attribute__((noreturn)) void child_init_signal_and_exit(int status) 
+{
+	child_init_signal(status);
+	exit(status);
 }
 
 static void safe_close(int *fd)
@@ -420,8 +424,10 @@
 	   potential clients will block rather than error if we are running
 	   but the cluster is not ready yet */
 	local_sock = open_local_sock();
-	if (local_sock < 0)
-		child_init_signal(DFAIL_LOCAL_SOCK);
+	if (local_sock < 0) {
+		child_init_signal_and_exit(DFAIL_LOCAL_SOCK);
+		/* NOTREACHED */
+	}
 
 	/* Set up signal handlers, USR1 is for cluster change notifications (in cman)
 	   USR2 causes child threads to exit.
@@ -498,10 +504,8 @@
 	if (!clops) {
 		DEBUGLOG("Can't initialise cluster interface\n");
 		log_error("Can't initialise cluster interface\n");
-		child_init_signal(DFAIL_CLUSTER_IF);
-#ifdef __clang__
-		__builtin_unreachable();
-#endif
+		child_init_signal_and_exit(DFAIL_CLUSTER_IF);
+		/* NOTREACHED */
 	}
 	DEBUGLOG("Cluster ready, doing some more initialisation\n");
 
@@ -517,10 +521,8 @@
 	/* Add the local socket to the list */
 	newfd = malloc(sizeof(struct local_client));
 	if (!newfd) {
-		child_init_signal(DFAIL_MALLOC);
-#ifdef __clang__
-		__builtin_unreachable();
-#endif
+		child_init_signal_and_exit(DFAIL_MALLOC);
+		/* NOTREACHED */
 	}
 
 	newfd->fd = local_sock;


^ permalink raw reply	[flat|nested] 13+ messages in thread

* LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT ...
@ 2010-10-25 13:54 agk
  0 siblings, 0 replies; 13+ messages in thread
From: agk @ 2010-10-25 13:54 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2010-10-25 13:54:30

Modified files:
	.              : VERSION VERSION_DM WHATS_NEW WHATS_NEW_DM 
	lib/display    : display.c display.h 
	lib/metadata   : lv.c metadata.c metadata.h vg.c 

Log message:
	pre-release

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.256&r2=1.257
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION_DM.diff?cvsroot=lvm2&r1=1.65&r2=1.66
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1774&r2=1.1775
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.418&r2=1.419
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/display/display.c.diff?cvsroot=lvm2&r1=1.112&r2=1.113
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/display/display.h.diff?cvsroot=lvm2&r1=1.22&r2=1.23
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/lv.c.diff?cvsroot=lvm2&r1=1.17&r2=1.18
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.407&r2=1.408
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.h.diff?cvsroot=lvm2&r1=1.223&r2=1.224
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/vg.c.diff?cvsroot=lvm2&r1=1.7&r2=1.8

--- LVM2/VERSION	2010/09/27 19:09:34	1.256
+++ LVM2/VERSION	2010/10/25 13:54:29	1.257
@@ -1 +1 @@
-2.02.75(2)-cvs (2010-09-24)
+2.02.75(2)-cvs (2010-10-25)
--- LVM2/VERSION_DM	2010/09/27 19:09:34	1.65
+++ LVM2/VERSION_DM	2010/10/25 13:54:29	1.66
@@ -1 +1 @@
-1.02.56-cvs (2010-09-24)
+1.02.56-cvs (2010-10-25)
--- LVM2/WHATS_NEW	2010/10/25 13:10:13	1.1774
+++ LVM2/WHATS_NEW	2010/10/25 13:54:29	1.1775
@@ -1,5 +1,6 @@
-Version 2.02.75 - 
-=====================================
+Version 2.02.75 - 25th October 2010
+===================================
+  Annotate more variables and parameters as const.
   Fix missing variable initialization in cluster_send() function from cmirrord.
   Fix pointer for VG name in _pv_resize_single error code path.
   Fix warning for changed alignment requirements for dmeventd read/write func.
@@ -7,37 +8,40 @@
   Don't take write lock in vgchange --refresh, --poll or --monitor.
   Skip dm devices in scan if they contain only error targets or are empty.
   Fix strict-aliasing compile warning in partition table scanning.
-  Add an option to automatically extend snapshots through dmeventd.
-  Remove dependency on libm, floor() is replaced with integer algorithm.
+  Fix pthread mutex usage deadlock in clvmd.
+  Automatically extend snapshots with dmeventd according to policy in lvm.conf.
+  Add activation/snapshot_autoextend_threshold/percent to lvm.conf.
+  Fix liblvm2cmd link order to support --as-needed.
+  Remove dependency on libm by replacing floor() by an integer-based algorithm.
   Fix hang when repairing a mirrored-log that had both devs fail.
   Convey need for snapshot-merge target in lvconvert error message and man page.
-  Add "devices/disable_after_error_count" to lvm.conf.
+  Add devices/disable_after_error_count config to limit access to failing devs.
   Give correct error message when creating a too-small snapshot.
-  Implement vgextend --restoremissing.
+  Implement vgextend --restoremissing to reinstate missing devs that return.
+  Make lvconvert respect --yes and --force when converting an inactive log.
   Refactor and add 'get' functions for lv properties/fields.
   Update script for fsadm testing.
   Better support of noninteractive shell execution of fsadm.
   Fix usage of --yes flag for ReiserFS resize in fsadm.
   Fix detection of mounted filesystems for fsadm when udev is used.
-  Fix assignment of default value to LVM variable is fsadm.
+  Fix assignment of default value to LVM variable in fsadm.
   Fix support for --yes flag for fsadm.
-  Do not execute lvresize with --dry-run option for fsadm.
+  Do not execute lvresize from fsadm --dry-run.
   Fix fsadm return error code from user's break action.
   Allow CC to be overridden at build time (for 'scan-build make').
   Rename 'flags' to 'status' in struct metadata_area.
   Avoid segfault by limiting partial mode for lvm1 metadata. (2.02.74)
-  Add dm_zalloc and use it and dm_pool_zalloc throughout.
+  Use dm_zalloc and dm_pool_zalloc throughout.
   Add pv_get_property and create generic internal _get_property function.
   Add 'get' functions for pv and vg properties/fields.
   Make generic GET_*_PROPERTY_FN macros with secondary macro for vg, pv & lv.
   Add tags_format_and_copy() common function and call from _tags_disp.
   Add id_format_and_copy() common function and call from _uuid_disp.
-  Simplify logic to create '{pv|vg|lv}_attr' strings.
   Refactor report.c '*_disp' functions to call supporting functions.
-  Refactor lib/metadata/metadata.[ch] into {pv|vg|lv}.[ch].
-  Fix memory leak of vg_read while using live copies of metadata in directories.
+  Move parts of metadata*.[ch] into new {pv|vg|lv}.[ch] files.
+  Fix vg_read memory leak with directory-based metadata.
   Fix memory leak of config_tree in reinitialization code path.
-  Swap pool destruction order in dmeventd_lvm2_exit() to fix leak report.
+  Fix pool destruction order in dmeventd_lvm2_exit() to avoid leak debug mesg.
   Read whole /proc/self/maps file before working with maps entries.
   Speed up unquoting of quoted double quotes and backslashes.
   Speed up CRC32 calculations by using a larger lookup table.
--- LVM2/WHATS_NEW_DM	2010/10/25 13:13:53	1.418
+++ LVM2/WHATS_NEW_DM	2010/10/25 13:54:29	1.419
@@ -1,6 +1,8 @@
-Version 1.02.56 - 
-=====================================
-  Fix API for dm_basename() and return const pointer for const input pointer.
+Version 1.02.56 - 25th October 2010
+===================================
+  Return const pointer from dm_basename() in libdevmapper.
+  Implement dmeventd -R to restart without state loss.
+  Add dm_zalloc and use it and dm_pool_zalloc throughout.
   Add --setuuid to dmsetup rename.
   Add dm_task_set_newuuid to set uuid of mapped device post-creation.
 
--- LVM2/lib/display/display.c	2010/08/17 16:25:33	1.112
+++ LVM2/lib/display/display.c	2010/10/25 13:54:29	1.113
@@ -27,13 +27,14 @@
 static const struct {
 	alloc_policy_t alloc;
 	const char str[12]; /* must be changed when size extends 11 chars */
+	const char repchar;
 } _policies[] = {
 	{
-	ALLOC_CONTIGUOUS, "contiguous"}, {
-	ALLOC_CLING, "cling"}, {
-	ALLOC_NORMAL, "normal"}, {
-	ALLOC_ANYWHERE, "anywhere"}, {
-	ALLOC_INHERIT, "inherit"}
+	ALLOC_CONTIGUOUS, "contiguous", 'c'}, {
+	ALLOC_CLING, "cling", 'l'}, {
+	ALLOC_NORMAL, "normal", 'n'}, {
+	ALLOC_ANYWHERE, "anywhere", 'a'}, {
+	ALLOC_INHERIT, "inherit", 'i'}
 };
 
 static const int _num_policies = sizeof(_policies) / sizeof(*_policies);
@@ -120,6 +121,17 @@
 	return v;
 }
 
+const char alloc_policy_char(alloc_policy_t alloc)
+{
+	int i;
+
+	for (i = 0; i < _num_policies; i++)
+		if (_policies[i].alloc == alloc)
+			return _policies[i].repchar;
+
+	return '-';
+}
+
 const char *get_alloc_string(alloc_policy_t alloc)
 {
 	int i;
--- LVM2/lib/display/display.h	2010/07/02 21:16:50	1.22
+++ LVM2/lib/display/display.h	2010/10/25 13:54:29	1.23
@@ -57,6 +57,7 @@
  * Allocation policy display conversion routines.
  */
 const char *get_alloc_string(alloc_policy_t alloc);
+const char alloc_policy_char(alloc_policy_t alloc);
 alloc_policy_t get_alloc_from_string(const char *str);
 
 char yes_no_prompt(const char *prompt, ...) __attribute__ ((format(printf, 1, 2)));
--- LVM2/lib/metadata/lv.c	2010/10/21 14:49:31	1.17
+++ LVM2/lib/metadata/lv.c	2010/10/25 13:54:29	1.18
@@ -15,6 +15,7 @@
 
 #include "lib.h"
 #include "metadata.h"
+#include "display.h"
 #include "activate.h"
 #include "toolcontext.h"
 #include "segtype.h"
--- LVM2/lib/metadata/metadata.c	2010/10/25 13:35:13	1.407
+++ LVM2/lib/metadata/metadata.c	2010/10/25 13:54:29	1.408
@@ -3957,22 +3957,6 @@
 	return 1;
 }
 
-char alloc_policy_char(alloc_policy_t alloc)
-{
-	switch (alloc) {
-	case ALLOC_CONTIGUOUS:
-		return 'c';
-	case ALLOC_CLING:
-		return 'l';
-	case ALLOC_NORMAL:
-		return 'n';
-	case ALLOC_ANYWHERE:
-		return 'a';
-	default:
-		return 'i';
-	}
-}
-
 char *tags_format_and_copy(struct dm_pool *mem, const struct dm_list *tags)
 {
 	struct str_list *sl;
--- LVM2/lib/metadata/metadata.h	2010/10/05 17:34:07	1.223
+++ LVM2/lib/metadata/metadata.h	2010/10/25 13:54:29	1.224
@@ -412,7 +412,6 @@
 int is_mirror_image_removable(struct logical_volume *mimage_lv, void *baton);
 
 uint64_t find_min_mda_size(struct dm_list *mdas);
-char alloc_policy_char(alloc_policy_t alloc);
 char *tags_format_and_copy(struct dm_pool *mem, const struct dm_list *tags);
 
 #endif
--- LVM2/lib/metadata/vg.c	2010/09/30 20:47:18	1.7
+++ LVM2/lib/metadata/vg.c	2010/10/25 13:54:29	1.8
@@ -15,6 +15,7 @@
 
 #include "lib.h"
 #include "metadata.h"
+#include "display.h"
 #include "activate.h"
 
 char *vg_fmt_dup(const struct volume_group *vg)


^ permalink raw reply	[flat|nested] 13+ messages in thread

* LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT ...
@ 2010-09-22  1:36 agk
  0 siblings, 0 replies; 13+ messages in thread
From: agk @ 2010-09-22  1:36 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2010-09-22 01:36:14

Modified files:
	.              : VERSION VERSION_DM WHATS_NEW WHATS_NEW_DM 
	lib/cache      : lvmcache.c 
	lib/device     : dev-cache.c dev-cache.h 
	lib/filters    : filter-composite.c filter-md.c 
	                 filter-persistent.c filter-regex.c 
	                 filter-sysfs.c filter.c 

Log message:
	Track recursive filter iteration to avoid refreshing while in use. (2.02.56)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.253&r2=1.254
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION_DM.diff?cvsroot=lvm2&r1=1.62&r2=1.63
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1731&r2=1.1732
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.413&r2=1.414
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/cache/lvmcache.c.diff?cvsroot=lvm2&r1=1.93&r2=1.94
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/device/dev-cache.c.diff?cvsroot=lvm2&r1=1.58&r2=1.59
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/device/dev-cache.h.diff?cvsroot=lvm2&r1=1.11&r2=1.12
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/filters/filter-composite.c.diff?cvsroot=lvm2&r1=1.15&r2=1.16
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/filters/filter-md.c.diff?cvsroot=lvm2&r1=1.9&r2=1.10
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/filters/filter-persistent.c.diff?cvsroot=lvm2&r1=1.44&r2=1.45
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/filters/filter-regex.c.diff?cvsroot=lvm2&r1=1.27&r2=1.28
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/filters/filter-sysfs.c.diff?cvsroot=lvm2&r1=1.21&r2=1.22
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/filters/filter.c.diff?cvsroot=lvm2&r1=1.56&r2=1.57

--- LVM2/VERSION	2010/08/25 11:25:02	1.253
+++ LVM2/VERSION	2010/09/22 01:36:13	1.254
@@ -1 +1 @@
-2.02.74(2)-cvs (2010-08-19)
+2.02.74(2)-cvs (2010-09-22)
--- LVM2/VERSION_DM	2010/08/19 22:33:14	1.62
+++ LVM2/VERSION_DM	2010/09/22 01:36:13	1.63
@@ -1 +1 @@
-1.02.55-cvs (2010-08-19)
+1.02.55-cvs (2010-09-22)
--- LVM2/WHATS_NEW	2010/09/20 14:25:27	1.1731
+++ LVM2/WHATS_NEW	2010/09/22 01:36:13	1.1732
@@ -1,7 +1,8 @@
 Version 2.02.74 - 
-==================================
-  Revert to old glibc behaviour for vsnprintf used in emit_to_buffer function.
-  Use dynamic allocation for metadata's tag buffer (removes 4096 char. limit).
+=====================================
+  Track recursive filter iteration to avoid refreshing while in use. (2.02.56)
+  Revert to old glibc vsnprintf behaviour in emit_to_buffer() to catch overflow.
+  Allocate buffer for metadata tags dynamically to remove 4k limit.
   Add random suffix to archive file names to prevent races when being created.
   Reinitialize archive and backup handling on toolcontext refresh.
   Fix opprobriously slow I/O to cluster mirrors created with --nosync.
@@ -16,16 +17,16 @@
   Add "devices/default_data_alignment" to lvm.conf.
   Add implmentation for simple numeric 'get' property functions.
   Define GET_NUM_PROPERTY_FN macro to simplify numeric property 'get' function
-  Add properties.[ch] to lib/report, defined based on columns.h.
+  Add properties.[ch] to lib/report using columns.h.
   Add macro definitions to report infrastructure for character array length.
   Remove explicit double quotes from columns.h 'id' entries.
   Add 'flags' field to columns.h and define FIELD_MODIFIABLE.
   Add vg_mda_size and vg_mda_free functions.
   Simplify MD/swap signature detection in pvcreate and allow aborting.
-  Remove assumption that --yes must be used only in --force mode.
+  Allow --yes to be used without --force mode.
   Fix file descriptor leak in swap signature detection error path.
   Detect and allow abort in pvcreate if LUKS signature is detected.
-  Use proper locks mask when checking for LCK_WRITE.
+  Always mask lock flags correctly when checking for LCK_WRITE.
 
 Version 2.02.73 - 18th August 2010
 ==================================
--- LVM2/WHATS_NEW_DM	2010/08/19 22:33:14	1.413
+++ LVM2/WHATS_NEW_DM	2010/09/22 01:36:13	1.414
@@ -1,5 +1,6 @@
 Version 1.02.55 - 
-==================================
+=====================================
+  Add DM_REPORT_FIELD_TYPE_ID_LEN to libdevmapper.h.
 
 Version 1.02.54 - 18th August 2010
 ==================================
--- LVM2/lib/cache/lvmcache.c	2010/07/09 15:34:42	1.93
+++ LVM2/lib/cache/lvmcache.c	2010/09/22 01:36:14	1.94
@@ -570,7 +570,7 @@
 		goto out;
 	}
 
-	if (full_scan == 2 && !refresh_filters(cmd)) {
+	if (full_scan == 2 && !cmd->filter->use_count && !refresh_filters(cmd)) {
 		log_error("refresh filters failed");
 		goto out;
 	}
--- LVM2/lib/device/dev-cache.c	2010/08/03 13:39:27	1.58
+++ LVM2/lib/device/dev-cache.c	2010/09/22 01:36:14	1.59
@@ -815,12 +815,14 @@
 
 	di->current = btree_first(_cache.devices);
 	di->filter = f;
+	di->filter->use_count++;
 
 	return di;
 }
 
 void dev_iter_destroy(struct dev_iter *iter)
 {
+	iter->filter->use_count--;
 	dm_free(iter);
 }
 
--- LVM2/lib/device/dev-cache.h	2007/08/20 20:55:25	1.11
+++ LVM2/lib/device/dev-cache.h	2010/09/22 01:36:14	1.12
@@ -24,6 +24,7 @@
 struct dev_filter {
 	int (*passes_filter) (struct dev_filter * f, struct device * dev);
 	void (*destroy) (struct dev_filter * f);
+	unsigned use_count;
 	void *private;
 };
 
--- LVM2/lib/filters/filter-composite.c	2008/01/30 13:59:58	1.15
+++ LVM2/lib/filters/filter-composite.c	2010/09/22 01:36:14	1.16
@@ -37,6 +37,9 @@
 {
 	struct dev_filter **filters = (struct dev_filter **) f->private;
 
+	if (f->use_count)
+		log_error(INTERNAL_ERROR "Destroying composite filter while in use %u times.", f->use_count);
+
 	while (*filters) {
 		(*filters)->destroy(*filters);
 		filters++;
@@ -69,6 +72,7 @@
 
 	cft->passes_filter = _and_p;
 	cft->destroy = _composite_destroy;
+	cft->use_count = 0;
 	cft->private = filters_copy;
 
 	return cft;
--- LVM2/lib/filters/filter-md.c	2010/07/09 15:34:43	1.9
+++ LVM2/lib/filters/filter-md.c	2010/09/22 01:36:14	1.10
@@ -45,6 +45,9 @@
 
 static void _destroy(struct dev_filter *f)
 {
+	if (f->use_count)
+		log_error(INTERNAL_ERROR "Destroying sysfs filter while in use %u times.", f->use_count);
+
 	dm_free(f);
 }
 
@@ -59,6 +62,7 @@
 
 	f->passes_filter = _ignore_md;
 	f->destroy = _destroy;
+	f->use_count = 0;
 	f->private = NULL;
 
 	return f;
--- LVM2/lib/filters/filter-persistent.c	2010/08/09 14:05:18	1.44
+++ LVM2/lib/filters/filter-persistent.c	2010/09/22 01:36:14	1.45
@@ -274,13 +274,13 @@
 		return 0;
 	}
 
-        /* Test dm devices every time, so cache them as GOOD. */
+	/* Test dm devices every time, so cache them as GOOD. */
 	if (MAJOR(dev->dev) == dm_major()) {
 		if (!l)
 			dm_list_iterate_items(sl, &dev->aliases)
 				dm_hash_insert(pf->devices, sl->str, PF_GOOD_DEVICE);
 		if (!device_is_usable(dev)) {
-                	log_debug("%s: Skipping unusable device", dev_name(dev));
+			log_debug("%s: Skipping unusable device", dev_name(dev));
 			return 0;
 		}
 		return pf->real->passes_filter(pf->real, dev);
@@ -301,6 +301,9 @@
 {
 	struct pfilter *pf = (struct pfilter *) f->private;
 
+	if (f->use_count)
+		log_error(INTERNAL_ERROR "Destroying persistent filter while in use %u times.", f->use_count);
+
 	dm_hash_destroy(pf->devices);
 	dm_free(pf->file);
 	pf->real->destroy(pf->real);
@@ -339,6 +342,7 @@
 
 	f->passes_filter = _lookup_p;
 	f->destroy = _persistent_destroy;
+	f->use_count = 0;
 	f->private = pf;
 
 	return f;
--- LVM2/lib/filters/filter-regex.c	2010/04/30 12:31:33	1.27
+++ LVM2/lib/filters/filter-regex.c	2010/09/22 01:36:14	1.28
@@ -181,6 +181,10 @@
 static void _regex_destroy(struct dev_filter *f)
 {
 	struct rfilter *rf = (struct rfilter *) f->private;
+
+	if (f->use_count)
+		log_error(INTERNAL_ERROR "Destroying regex filter while in use %u times.", f->use_count);
+
 	dm_pool_destroy(rf->mem);
 }
 
@@ -206,6 +210,7 @@
 
 	f->passes_filter = _accept_p;
 	f->destroy = _regex_destroy;
+	f->use_count = 0;
 	f->private = rf;
 	return f;
 
--- LVM2/lib/filters/filter-sysfs.c	2010/07/09 15:34:43	1.21
+++ LVM2/lib/filters/filter-sysfs.c	2010/09/22 01:36:14	1.22
@@ -282,6 +282,10 @@
 static void _destroy(struct dev_filter *f)
 {
 	struct dev_set *ds = (struct dev_set *) f->private;
+
+	if (f->use_count)
+		log_error(INTERNAL_ERROR "Destroying sysfs filter while in use %u times.", f->use_count);
+
 	dm_pool_destroy(ds->mem);
 }
 
@@ -316,6 +320,7 @@
 
 	f->passes_filter = _accept_p;
 	f->destroy = _destroy;
+	f->use_count = 0;
 	f->private = ds;
 	return f;
 
--- LVM2/lib/filters/filter.c	2010/08/11 12:14:24	1.56
+++ LVM2/lib/filters/filter.c	2010/09/22 01:36:14	1.57
@@ -326,6 +326,7 @@
 
 	f->passes_filter = _passes_lvm_type_device_filter;
 	f->destroy = lvm_type_filter_destroy;
+	f->use_count = 0;
 	f->private = NULL;
 
 	if (!_scan_proc_dev(proc, cn)) {
@@ -338,5 +339,8 @@
 
 void lvm_type_filter_destroy(struct dev_filter *f)
 {
+	if (f->use_count)
+		log_error(INTERNAL_ERROR "Destroying lvm_type filter while in use %u times.", f->use_count);
+
 	dm_free(f);
 }


^ permalink raw reply	[flat|nested] 13+ messages in thread

* LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT ...
@ 2010-06-30 14:04 agk
  0 siblings, 0 replies; 13+ messages in thread
From: agk @ 2010-06-30 14:04 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2010-06-30 14:04:15

Modified files:
	.              : VERSION VERSION_DM WHATS_NEW WHATS_NEW_DM 
	doc            : example.conf.in 

Log message:
	pre-release

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.242&r2=1.243
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION_DM.diff?cvsroot=lvm2&r1=1.53&r2=1.54
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1641&r2=1.1642
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.383&r2=1.384
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/doc/example.conf.in.diff?cvsroot=lvm2&r1=1.3&r2=1.4

--- LVM2/VERSION	2010/06/23 19:35:11	1.242
+++ LVM2/VERSION	2010/06/30 14:04:15	1.243
@@ -1 +1 @@
-2.02.69(2)-cvs (2010-06-23)
+2.02.69(2)-cvs (2010-06-30)
--- LVM2/VERSION_DM	2010/06/23 19:35:11	1.53
+++ LVM2/VERSION_DM	2010/06/30 14:04:15	1.54
@@ -1 +1 @@
-1.02.51-cvs (2010-06-23)
+1.02.51-cvs (2010-06-30)
--- LVM2/WHATS_NEW	2010/06/30 14:01:39	1.1641
+++ LVM2/WHATS_NEW	2010/06/30 14:04:15	1.1642
@@ -1,18 +1,16 @@
-Version 2.02.69 - 
+Version 2.02.69 - 30th June 2010
 ================================
   Fix vgremove to allow removal of VG with missing PVs. (2.02.52)
-  Add --metadataignore to pvcreate and vgextend and define in lvm.conf.
-  Add {pv|vg}_mda_used_count which displays a count of mdas w/ignored bit clear.
-  Add vg_mda_copies which displays the value of --vgmetadatacopies.
+  Add metadata/vgmetadatacopies to lvm.conf.
+  Add --metadataignore to pvcreate and vgextend.
+  Add vg_mda_copies, pv_mda_used_count and vg_mda_used_count to reports.
   Describe --vgmetadatacopies in lvm.conf and other man pages.
-  Interpret --metadatacopies based on PV or VG command.
-  Allow "all" and "unmanaged" values for --vgmetadatacopies in addition to #.
-  Add vgcreate/vgchange --vgmetadatacopies to select #mdas in a VG.
+  Add --[vg]metadatacopies to select number of mdas to use in a VG.
   Make the metadata ignore bit control read/write metadata areas in a PV.
   Add pvchange --metadataignore to set or clear a metadata ignore bit.
   Refactor metadata code to prepare for --metadataignore / --vgmetadatacopies.
   Ensure region_size of mirrored log does not exceed its full size.
-  Generate liblvm2app and libdevmapper exported symbols from header file.
+  Generate liblvm2app exported symbols from header file.
   Preload libc locale messages to prevent reading it in memory locked state.
   Fix handling of simultaneous mirror image and mirrored log image failure.
 
--- LVM2/WHATS_NEW_DM	2010/06/23 19:35:11	1.383
+++ LVM2/WHATS_NEW_DM	2010/06/30 14:04:15	1.384
@@ -1,5 +1,6 @@
-Version 1.02.51 - 
+Version 1.02.51 - 30th June 2010
 ================================
+  Generate libdevmapper exported symbols from header file.
 
 Version 1.02.50 - 23rd June 2010
 ================================
--- LVM2/doc/example.conf.in	2010/06/28 20:40:15	1.3
+++ LVM2/doc/example.conf.in	2010/06/30 14:04:15	1.4
@@ -456,7 +456,7 @@
 
     # pvmetadatacopies = 1
 
-    # Default number of copies of metadata to hold on each VG.
+    # Default number of copies of metadata to maintain for each VG.
     # If set to a non-zero value, LVM automatically manages the PV
     # 'metadataignore' flags (see pvchange) to achieve the requested
     # copies of metadata.  You may set a value larger than the


^ permalink raw reply	[flat|nested] 13+ messages in thread

* LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT ...
@ 2010-05-17 18:39 agk
  0 siblings, 0 replies; 13+ messages in thread
From: agk @ 2010-05-17 18:39 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2010-05-17 18:39:03

Modified files:
	.              : VERSION VERSION_DM WHATS_NEW WHATS_NEW_DM 
	lib/filters    : filter.c 

Log message:
	pre-release

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.234&r2=1.235
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION_DM.diff?cvsroot=lvm2&r1=1.45&r2=1.46
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1560&r2=1.1561
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.369&r2=1.370
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/filters/filter.c.diff?cvsroot=lvm2&r1=1.52&r2=1.53

--- LVM2/VERSION	2010/04/30 15:48:38	1.234
+++ LVM2/VERSION	2010/05/17 18:39:01	1.235
@@ -1 +1 @@
-2.02.65(2)-cvs (2010-04-30)
+2.02.65(2)-cvs (2010-05-17)
--- LVM2/VERSION_DM	2010/04/30 15:48:39	1.45
+++ LVM2/VERSION_DM	2010/05/17 18:39:01	1.46
@@ -1 +1 @@
-1.02.48-cvs (2010-04-30)
+1.02.48-cvs (2010-05-17)
--- LVM2/WHATS_NEW	2010/05/17 03:18:27	1.1560
+++ LVM2/WHATS_NEW	2010/05/17 18:39:01	1.1561
@@ -1,19 +1,22 @@
-Version 2.02.65 - 
-=================================
-  Fix clvmd init script to not deactive non-clustered volume groups.
-  Disallow cluster attr toggling if there are active mirrors or snapshots.
+Version 2.02.65 - 17th May 2010
+===============================
+  Fix clvmd init script never to deactivate non-clustered volume groups.
+  Disallow vgchange --clustered if there are active mirrors or snapshots.
+  Introduce lv_is_mirrored.
   Use /bin/bash for scripts with bashisms.
-  Skip internal lvm devices in scan if ignore suspended devices is requested.
+  Skip internal lvm devices in scan if ignore_suspended_devices is set.
   Do not merge old device cache after we run full scan. (2.02.56)
   Add pkgconfigdir Makefile variable for make install override.
-  Switch usage of Libs.private: to Requires.private: in devmapper.pc, lvm2app.pc.
-  Use field Requires.private: for devmapper-event.pc.
-  Add devmapper library to linked libdevmapper-event.so.
-  Link liblvm2cmd.so with devmapper-event and devmapper libs.
+  Configure pkgconfig udev and selinux dependencies.
+  Switch Libs.private to Requires.private in devmapper.pc and lvm2app.pc.
+  Use pkgconfig Requires.private for devmapper-event.pc.
+  Add libdevmapper to linked libdevmapper-event.so.
+  Link liblvm2cmd.so with libdevmapper-event and libdevmapper.
   Fix truncated total size displayed by pvscan.
-  Add new --sysinit option for vgchange and lvchange.
-  Suppress duplicate error messages about read failures and missing devices.
-  Install plugins to $(libdir)/device-mapper and $(libdir)/lvm2.
+  Add new --sysinit compound option to vgchange and lvchange.
+  Drop duplicate errors for read failures and missing devices to verbose level.
+  Use $(libdir)/lvm2 with make install_lvm2_plugin.
+  Use $(libdir)/device-mapper with make install_dm_plugin.
   Add dm_list_splice() function to join two lists together.
 
 Version 2.02.64 - 30th April 2010
--- LVM2/WHATS_NEW_DM	2010/05/14 14:56:39	1.369
+++ LVM2/WHATS_NEW_DM	2010/05/17 18:39:01	1.370
@@ -1,8 +1,10 @@
-Version 1.02.48 -
-=================================
+Version 1.02.48 - 17th May 2010
+================================
   Use -d to control level of messages sent to syslog by dmeventd.
   Change -d to -f to run dmeventd in foreground.
   Do not print encryption key in message debug output (cryptsetup luksResume).
+  Fix dmeventd static build library dependencies.
+  Fix udev flags on remove in create_and_load error path.
 
 Version 1.02.47 - 30th April 2010
 =================================
--- LVM2/lib/filters/filter.c	2010/05/13 18:38:40	1.52
+++ LVM2/lib/filters/filter.c	2010/05/17 18:39:03	1.53
@@ -130,6 +130,7 @@
 		return 0;
 	}
 
+	/* FIXME Always check 'layer' regardless of ignore_suspended_devices */
 	/* Skip suspended devices */
 	if (MAJOR(dev->dev) == _device_mapper_major &&
 	    ignore_suspended_devices() && !device_is_usable(dev)) {


^ permalink raw reply	[flat|nested] 13+ messages in thread

* LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT ...
@ 2010-04-30 14:49 agk
  0 siblings, 0 replies; 13+ messages in thread
From: agk @ 2010-04-30 14:49 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2010-04-30 14:49:45

Modified files:
	.              : VERSION VERSION_DM WHATS_NEW WHATS_NEW_DM 
	                 configure 
	daemons/clvmd  : clvmd-command.c 
	man            : clvmd.8.in 
	scripts        : relpath.awk 

Log message:
	pre-release

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.232&r2=1.233
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION_DM.diff?cvsroot=lvm2&r1=1.43&r2=1.44
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1544&r2=1.1545
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.365&r2=1.366
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/configure.diff?cvsroot=lvm2&r1=1.125&r2=1.126
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/daemons/clvmd/clvmd-command.c.diff?cvsroot=lvm2&r1=1.32&r2=1.33
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/man/clvmd.8.in.diff?cvsroot=lvm2&r1=1.3&r2=1.4
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/scripts/relpath.awk.diff?cvsroot=lvm2&r1=1.2&r2=1.3

--- LVM2/VERSION	2010/04/19 15:24:00	1.232
+++ LVM2/VERSION	2010/04/30 14:49:42	1.233
@@ -1 +1 @@
-2.02.64(2)-cvs (2010-04-14)
+2.02.64(2)-cvs (2010-04-30)
--- LVM2/VERSION_DM	2010/04/14 21:47:48	1.43
+++ LVM2/VERSION_DM	2010/04/30 14:49:43	1.44
@@ -1 +1 @@
-1.02.47-cvs (2010-04-14)
+1.02.47-cvs (2010-04-30)
--- LVM2/WHATS_NEW	2010/04/30 12:37:04	1.1544
+++ LVM2/WHATS_NEW	2010/04/30 14:49:43	1.1545
@@ -1,12 +1,13 @@
-Version 2.02.64 -
+Version 2.02.64 - 30th April 2010
 =================================
+  Avoid pointless initialisation when the 'version' command is run directly.
   Fix memory leak for invalid regex pattern input.
   Display invalid regex pattern for filter configuration in case of error.
   Remove no-longer-used arg_ptr_value.
-  Fix -M and --type to use strings not pointers that change on config refresh.
+  Fix -M and --type to use strings, not pointers that change on config refresh.
   Fix lvconvert error message when existing mirrored LV is not found.
-  Disallow the direct removal of a merging snapshot.
   Set appropriate udev flags for reserved LVs.
+  Disallow the direct removal of a merging snapshot.
   Don't preload the origin when removing a snapshot whose merge is pending.
   Disallow the addition of mirror images while a conversion is happening.
   Disallow primary mirror image removal when mirror is not in-sync.
@@ -15,9 +16,10 @@
   Increment lvm2app version from 1 to 2 (memory allocation changes).
   Change lvm2app memory alloc/free for pv/vg/lv properties.
   Change daemon lock filename from lvm2_monitor to lvm2-monitor for consistency.
+  Install symbolic .so links with relative paths between usrlibdir and libdir.
   Add awk script relpath.awk to calculate paths for relative symlinks.
+  Use @AWK@ in makefiles.
   Fix double DESTDIR usage for infodir and mandir.
-  Install symbolic .so links with relative paths between usrlibdir and libdir.
 
 Version 2.02.63 - 14th April 2010
 =================================
--- LVM2/WHATS_NEW_DM	2010/04/29 01:48:19	1.365
+++ LVM2/WHATS_NEW_DM	2010/04/30 14:49:43	1.366
@@ -1,4 +1,4 @@
-Version 1.02.47 -
+Version 1.02.47 - 30th April 2010
 =================================
   Add support for new IMPORT{db} udev rule.
   Add DM_UDEV_PRIMARY_SOURCE_FLAG udev flag to recognize proper DM events.
--- LVM2/configure	2010/04/09 21:42:48	1.125
+++ LVM2/configure	2010/04/30 14:49:43	1.126
@@ -15609,6 +15609,7 @@
 
 
 
+
 ################################################################################
 ac_config_files="$ac_config_files Makefile make.tmpl daemons/Makefile daemons/clvmd/Makefile daemons/cmirrord/Makefile daemons/dmeventd/Makefile daemons/dmeventd/libdevmapper-event.pc daemons/dmeventd/plugins/Makefile daemons/dmeventd/plugins/lvm2/Makefile daemons/dmeventd/plugins/mirror/Makefile daemons/dmeventd/plugins/snapshot/Makefile doc/Makefile include/.symlinks include/Makefile lib/Makefile lib/format1/Makefile lib/format_pool/Makefile lib/locking/Makefile lib/mirror/Makefile lib/misc/lvm-version.h lib/snapshot/Makefile libdm/Makefile libdm/libdevmapper.pc liblvm/Makefile liblvm/liblvm2app.pc man/Makefile po/Makefile scripts/clvmd_init_red_hat scripts/cmirrord_init_red_hat scripts/lvm2_monitoring_init_red_hat scripts/Makefile test/Makefile test/api/Makefile tools/Makefile udev/Makefile"
 
--- LVM2/daemons/clvmd/clvmd-command.c	2010/04/20 14:07:38	1.32
+++ LVM2/daemons/clvmd/clvmd-command.c	2010/04/30 14:49:44	1.33
@@ -371,6 +371,7 @@
 	/*
 	 * Build the command-line
 	 */
+	/* FIXME missing strup error checks */
 	argv[0] = strdup("clvmd");
 
 	/* Propogate debug options */
--- LVM2/man/clvmd.8.in	2010/04/20 14:07:38	1.3
+++ LVM2/man/clvmd.8.in	2010/04/30 14:49:44	1.4
@@ -76,10 +76,11 @@
 devices on a cluster system are changed.
 .TP
 .I \-S
-Tells the running clvmd to exit and restart. This is a preferred option
-to killing and restarting clvmd as it will preserve exclusive LV locks.
-If a full stop & restart is done instead, exclusive LV locks will be
-re-acquired as shared.
+Tells the running clvmd to exit and reexecute itself, for example at the
+end of a package upgrade.  The new instance is instructed to reacquire
+any locks in the same state as they were previously held.  (Alternative
+methods of restarting the daemon have the side effect of changing
+exclusive LV locks into shared locks.)
 .TP
 .I \-I
 Selects the cluster manager to use for locking and internal communications,
--- LVM2/scripts/relpath.awk	2010/04/30 13:58:08	1.2
+++ LVM2/scripts/relpath.awk	2010/04/30 14:49:45	1.3
@@ -1,4 +1,4 @@
-#!/bin/awk -f
+#!/usr/bin/awk -f
 #
 # Copyright (C) 2010 Red Hat, Inc. All rights reserved.
 #


^ permalink raw reply	[flat|nested] 13+ messages in thread

* LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT ...
@ 2010-02-16  0:27 agk
  0 siblings, 0 replies; 13+ messages in thread
From: agk @ 2010-02-16  0:27 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2010-02-16 00:27:02

Modified files:
	.              : VERSION VERSION_DM WHATS_NEW WHATS_NEW_DM 
	liblvm         : lvm_lv.c lvm_pv.c lvm_vg.c 

Log message:
	post-release

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.226&r2=1.227
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION_DM.diff?cvsroot=lvm2&r1=1.38&r2=1.39
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1433&r2=1.1434
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.345&r2=1.346
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/liblvm/lvm_lv.c.diff?cvsroot=lvm2&r1=1.17&r2=1.18
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/liblvm/lvm_pv.c.diff?cvsroot=lvm2&r1=1.8&r2=1.9
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/liblvm/lvm_vg.c.diff?cvsroot=lvm2&r1=1.35&r2=1.36

--- LVM2/VERSION	2010/02/15 23:53:15	1.226
+++ LVM2/VERSION	2010/02/16 00:27:01	1.227
@@ -1 +1 @@
-2.02.61(1)-cvs (2010-02-15)
+2.02.62(1)-cvs (2010-02-15)
--- LVM2/VERSION_DM	2010/02/15 23:53:15	1.38
+++ LVM2/VERSION_DM	2010/02/16 00:27:01	1.39
@@ -1 +1 @@
-1.02.44-cvs (2010-02-15)
+1.02.45-cvs (2010-02-15)
--- LVM2/WHATS_NEW	2010/02/15 23:53:15	1.1433
+++ LVM2/WHATS_NEW	2010/02/16 00:27:01	1.1434
@@ -1,3 +1,6 @@
+Version 2.02.62 -
+====================================
+
 Version 2.02.61 - 15th February 2010
 ====================================
   Fix some consts and floating point gcc warnings.
--- LVM2/WHATS_NEW_DM	2010/02/15 23:53:15	1.345
+++ LVM2/WHATS_NEW_DM	2010/02/16 00:27:01	1.346
@@ -1,3 +1,6 @@
+Version 1.02.45 -
+====================================
+
 Version 1.02.44 - 15th February 2010
 ====================================
   Add DM_UDEV_DISABLE_LIBRARY_FALLBACK udev flag to rely on udev only.
--- LVM2/liblvm/lvm_lv.c	2010/02/14 03:21:06	1.17
+++ LVM2/liblvm/lvm_lv.c	2010/02/16 00:27:02	1.18
@@ -26,7 +26,7 @@
 /* FIXME: have lib/report/report.c _disp function call lv_size()? */
 uint64_t lvm_lv_get_size(const lv_t lv)
 {
-	return SECTOR_SIZE*lv_size(lv);
+	return SECTOR_SIZE * lv_size(lv);
 }
 
 char *lvm_lv_get_uuid(const lv_t lv)
@@ -112,7 +112,8 @@
 	if (!vg_check_write_mode(vg))
 		return NULL;
 	memset(&lp, 0, sizeof(lp));
-	extents = extents_from_size(vg->cmd, size/SECTOR_SIZE, vg->extent_size);
+	extents = extents_from_size(vg->cmd, size / SECTOR_SIZE,
+				    vg->extent_size);
 	_lv_set_default_params(&lp, vg, name, extents);
 	_lv_set_default_linear_params(vg->cmd, &lp);
 	if (!lv_create_single(vg, &lp))
--- LVM2/liblvm/lvm_pv.c	2010/02/14 03:21:38	1.8
+++ LVM2/liblvm/lvm_pv.c	2010/02/16 00:27:02	1.9
@@ -45,17 +45,17 @@
 
 uint64_t lvm_pv_get_dev_size(const pv_t pv)
 {
-	return (uint64_t) SECTOR_SIZE*pv_dev_size(pv);
+	return (uint64_t) SECTOR_SIZE * pv_dev_size(pv);
 }
 
 uint64_t lvm_pv_get_size(const pv_t pv)
 {
-	return (uint64_t) SECTOR_SIZE*pv_size_field(pv);
+	return (uint64_t) SECTOR_SIZE * pv_size_field(pv);
 }
 
 uint64_t lvm_pv_get_free(const pv_t pv)
 {
-	return (uint64_t) SECTOR_SIZE*pv_free(pv);
+	return (uint64_t) SECTOR_SIZE * pv_free(pv);
 }
 
 int lvm_pv_resize(const pv_t pv, uint64_t new_size)
--- LVM2/liblvm/lvm_vg.c	2010/02/14 03:21:06	1.35
+++ LVM2/liblvm/lvm_vg.c	2010/02/16 00:27:02	1.36
@@ -86,7 +86,7 @@
 	if (!vg_check_write_mode(vg))
 		return -1;
 
-	if (!vg_set_extent_size(vg, new_size/SECTOR_SIZE))
+	if (!vg_set_extent_size(vg, new_size / SECTOR_SIZE))
 		return -1;
 	return 0;
 }
@@ -256,17 +256,17 @@
 /* FIXME: invalid handle? return INTMAX? */
 uint64_t lvm_vg_get_size(const vg_t vg)
 {
-	return SECTOR_SIZE*vg_size(vg);
+	return SECTOR_SIZE * vg_size(vg);
 }
 
 uint64_t lvm_vg_get_free_size(const vg_t vg)
 {
-	return SECTOR_SIZE*vg_free(vg);
+	return SECTOR_SIZE * vg_free(vg);
 }
 
 uint64_t lvm_vg_get_extent_size(const vg_t vg)
 {
-	return SECTOR_SIZE*vg_extent_size(vg);
+	return SECTOR_SIZE * vg_extent_size(vg);
 }
 
 uint64_t lvm_vg_get_extent_count(const vg_t vg)


^ permalink raw reply	[flat|nested] 13+ messages in thread

* LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT ...
@ 2010-02-15 23:53 agk
  0 siblings, 0 replies; 13+ messages in thread
From: agk @ 2010-02-15 23:53 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2010-02-15 23:53:16

Modified files:
	.              : VERSION VERSION_DM WHATS_NEW WHATS_NEW_DM 
	lib/format_text: format-text.c 

Log message:
	pre-release

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.225&r2=1.226
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION_DM.diff?cvsroot=lvm2&r1=1.37&r2=1.38
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1432&r2=1.1433
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.344&r2=1.345
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/format_text/format-text.c.diff?cvsroot=lvm2&r1=1.118&r2=1.119

--- LVM2/VERSION	2010/02/02 14:03:50	1.225
+++ LVM2/VERSION	2010/02/15 23:53:15	1.226
@@ -1 +1 @@
-2.02.61(1)-cvs (2010-02-02)
+2.02.61(1)-cvs (2010-02-15)
--- LVM2/VERSION_DM	2010/02/02 14:03:50	1.37
+++ LVM2/VERSION_DM	2010/02/15 23:53:15	1.38
@@ -1 +1 @@
-1.02.44-cvs (2010-02-02)
+1.02.44-cvs (2010-02-15)
--- LVM2/WHATS_NEW	2010/02/15 20:32:27	1.1432
+++ LVM2/WHATS_NEW	2010/02/15 23:53:15	1.1433
@@ -1,31 +1,32 @@
-Version 2.02.61 - 
-===================================
-  Add LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES env. var. to suppress error and warning mesages.
-  Remove hard-coded rule to skip _mimage devices in 11-dm-lvm.rules.
-  Use udev transactions in testsuite.
-  Don't use LVM_UDEV_DISABLE_CHECKING env. var. anymore and set the state automatically.
-  Add lvm2app exports lvm_pv_get_size(), lvm_pv_get_free(), and lvm_pv_get_dev_size().
-  Fix off by 512 sizes for lvm2app.
-  Add 'fail_if_percent_unsupported' arg to _percent() and _percent_run().
-  Remove false "failed to find tree node for" error when activating merging origin.
-  Make lvconvert --repair --use-policies exit with success when no action is needed.
-  Add multiple snapshot lv 'lvconvert --merge @tag' support via process_each_lv().
-  Fix inappropriate second resync when adding mimage to core-logged mirror.
-  Exclude internal VG names and uuids in lists returned via liblvm interface.
-  Add %ORIGIN support to lv{create,extend,reduce,resize} --extents option.
-  Add copy constructor for metadata_area.
+Version 2.02.61 - 15th February 2010
+====================================
+  Fix some consts and floating point gcc warnings.
+  Fix dm_report_field_uint64 function to accept 64-bit ints.
+  Change readhead display to use 32-bit -1 const instead of 64-bit.
+  Add LVM_SUPPRESS_LOCKING_FAILURE_MESSAGES environment variable.
+  Remove hard-coding that skipped _mimage devices from 11-dm-lvm.rules.
+  Use udev transactions in test suite.
+  Set udev state automatically instead of using LVM_UDEV_DISABLE_CHECKING.
+  Add lvm_pv_get_size, lvm_pv_get_free and lvm_pv_get_dev_size to lvm2app.
+  Change lvm2app to return all sizes in bytes as documented (not sectors).
+  Add 'fail_if_percent_unsupported' arg to _percent and _percent_run.
+  Remove false "failed to find tree node" error when activating merging origin.
+  Exit with success when lvconvert --repair --use-policies performs no action.
+  Accept a list of LVs with 'lvconvert --merge @tag' using process_each_lv.
+  Avoid unnecessary second resync when adding mimage to core-logged mirror.
+  Exclude internal VG names and uuids from lists returned through liblvm.
+  Add %ORIGIN support to lv{create,extend,reduce,resize} --extents.
+  Add _mda_copy to clone a struct metadata_area.
   Remove pointless versioned symlinks to dmeventd plugin libraries.
   Fix dmeventd snapshot plugin build dependency.
-  Make clvmd -V return zero status.
-  Fix lvconvert issue with cluster mirrors due to un'_safe' list processing
-  Fix pvmove abort workaround to be cluster-aware when temporary mirror activation fails.
-  Always query device by using uuid only and not name in clvmd.
-  Add missing metadata reverts in pvmove error path.
-  Unlock shared lock in clvmd if activation calls failed.
-  Fix return code of info call for query by uuid.
-  Fix some constness and floating point gcc warnings.
-  Fix dm_report_field_uint64 function.
-  Fix display of lv_kernel_read_ahead -1, broken by fix of dm_report_field_uint64().
+  Make clvmd -V return status zero.
+  Remove unnecessary 'dmsetup resume' following 'dmsetup create' in tests.
+  Fix cmirrord segfault in clog_cpg list processing when converting mirror log.
+  Deactivate temporary pvmove mirror cluster-wide when activating it fails.
+  Always query device by uuid and not name in clvmd.
+  Add missing metadata vg_reverts in pvmove error paths.
+  Unlock shared lock in clvmd if activation calls fail.
+  Return success from dev_manager_info with non-existent uuid if ioctl succeeds.
 
 Version 2.02.60 - 23rd January 2010
 ===================================
--- LVM2/WHATS_NEW_DM	2010/02/15 16:21:33	1.344
+++ LVM2/WHATS_NEW_DM	2010/02/15 23:53:15	1.345
@@ -1,9 +1,9 @@
-Version 1.02.44 - 
-===================================
+Version 1.02.44 - 15th February 2010
+====================================
   Add DM_UDEV_DISABLE_LIBRARY_FALLBACK udev flag to rely on udev only.
   Export dm_udev_create_cookie function to create new cookies on demand.
-  Add --udevcookie, udevcreatecookie and udevreleasecookie for dmsetup.
-  Don't use DM_UDEV_DISABLE_CHECKING env. var. anymore and set the state automatically.
+  Add --udevcookie, udevcreatecookie and udevreleasecookie to dmsetup.
+  Set udev state automatically instead of using DM_UDEV_DISABLE_CHECKING.
 
 Version 1.02.43 - 21st January 2010
 ===================================
--- LVM2/lib/format_text/format-text.c	2010/02/02 16:26:34	1.118
+++ LVM2/lib/format_text/format-text.c	2010/02/15 23:53:15	1.119
@@ -1571,6 +1571,9 @@
 	memcpy(mda_new, mda, sizeof(*mda));
 	memcpy(mdac_new, mdac, sizeof(*mdac));
 	mda_new->metadata_locn = mdac_new;
+
+	/* FIXME mda 'list' left invalid here */
+
 	return mda_new;
 }
 


^ permalink raw reply	[flat|nested] 13+ messages in thread

* LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT ...
@ 2010-02-02 14:03 agk
  0 siblings, 0 replies; 13+ messages in thread
From: agk @ 2010-02-02 14:03 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2010-02-02 14:03:51

Modified files:
	.              : VERSION VERSION_DM WHATS_NEW WHATS_NEW_DM 
	daemons/dmeventd/plugins: Makefile.in 

Log message:
	Fix dmeventd snapshot plugin build dependency.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.224&r2=1.225
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION_DM.diff?cvsroot=lvm2&r1=1.36&r2=1.37
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1414&r2=1.1415
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.341&r2=1.342
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/daemons/dmeventd/plugins/Makefile.in.diff?cvsroot=lvm2&r1=1.5&r2=1.6

--- LVM2/VERSION	2010/01/23 02:14:30	1.224
+++ LVM2/VERSION	2010/02/02 14:03:50	1.225
@@ -1 +1 @@
-2.02.60(1)-cvs (2010-01-23)
+2.02.61(1)-cvs (2010-02-02)
--- LVM2/VERSION_DM	2010/01/23 02:14:30	1.36
+++ LVM2/VERSION_DM	2010/02/02 14:03:50	1.37
@@ -1 +1 @@
-1.02.43-cvs (2010-01-23)
+1.02.44-cvs (2010-02-02)
--- LVM2/WHATS_NEW	2010/02/02 08:54:29	1.1414
+++ LVM2/WHATS_NEW	2010/02/02 14:03:50	1.1415
@@ -1,8 +1,7 @@
-Version 2.02.60 - 
+Version 2.02.61 - 
 ===================================
   Make clvmd -V return zero status.
 
-
 Version 2.02.60 - 23rd January 2010
 ===================================
   Fix lvconvert issue with cluster mirrors due to un'_safe' list processing
--- LVM2/WHATS_NEW_DM	2010/01/23 02:14:30	1.341
+++ LVM2/WHATS_NEW_DM	2010/02/02 14:03:50	1.342
@@ -1,3 +1,7 @@
+Version 1.02.44 - 
+===================================
+  Fix dmeventd snapshot plugin build dependency.
+
 Version 1.02.43 - 21st January 2010
 ===================================
   Remove bitset, hash and pool headers superceded by libdevmapper.h.
--- LVM2/daemons/dmeventd/plugins/Makefile.in	2010/01/21 22:15:46	1.5
+++ LVM2/daemons/dmeventd/plugins/Makefile.in	2010/02/02 14:03:51	1.6
@@ -19,8 +19,8 @@
 
 SUBDIRS += lvm2 mirror snapshot
 
+include ../../../make.tmpl
+
 mirror: lvm2
 snapshot: lvm2
 
-include ../../../make.tmpl
-


^ permalink raw reply	[flat|nested] 13+ messages in thread

* LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT ...
@ 2009-06-30 18:39 agk
  0 siblings, 0 replies; 13+ messages in thread
From: agk @ 2009-06-30 18:39 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2009-06-30 18:39:32

Modified files:
	.              : VERSION VERSION_DM WHATS_NEW WHATS_NEW_DM 
	daemons/dmeventd/plugins/mirror: dmeventd_mirror.c 
	lib/commands   : errors.h 
	lib/metadata   : metadata.c 
	man            : lvconvert.8.in lvs.8.in pvs.8.in 
	tools          : commands.h lvconvert.c 

Log message:
	pre-release tidy up

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.197&r2=1.198
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION_DM.diff?cvsroot=lvm2&r1=1.10&r2=1.11
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1158&r2=1.1159
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.279&r2=1.280
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/daemons/dmeventd/plugins/mirror/dmeventd_mirror.c.diff?cvsroot=lvm2&r1=1.24&r2=1.25
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/commands/errors.h.diff?cvsroot=lvm2&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.227&r2=1.228
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/man/lvconvert.8.in.diff?cvsroot=lvm2&r1=1.4&r2=1.5
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/man/lvs.8.in.diff?cvsroot=lvm2&r1=1.8&r2=1.9
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/man/pvs.8.in.diff?cvsroot=lvm2&r1=1.9&r2=1.10
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/commands.h.diff?cvsroot=lvm2&r1=1.127&r2=1.128
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvconvert.c.diff?cvsroot=lvm2&r1=1.86&r2=1.87

--- LVM2/VERSION	2009/06/26 10:57:30	1.197
+++ LVM2/VERSION	2009/06/30 18:39:31	1.198
@@ -1 +1 @@
-2.02.48-cvs (2009-06-26)
+2.02.48-cvs (2009-06-29)
--- LVM2/VERSION_DM	2009/06/26 10:57:30	1.10
+++ LVM2/VERSION_DM	2009/06/30 18:39:31	1.11
@@ -1 +1 @@
-1.02.33-cvs (2009-06-26)
+1.02.33-cvs (2009-06-29)
--- LVM2/WHATS_NEW	2009/06/26 10:57:30	1.1158
+++ LVM2/WHATS_NEW	2009/06/30 18:39:31	1.1159
@@ -1,27 +1,26 @@
-Version 2.02.48 - 26th June 2009
+Version 2.02.48 - 29th June 2009
 ================================
   Abort if automatic metadata correction fails when reading VG to update it.
   Explicitly request fallback to default major number in device mapper.
   Ignore suspended devices during repair.
-  Call vgreduce --removemissing automatically to clean up bad PVs in dmeventd.
-  Suggest use lvchange --resync when up converting not yet synced mirror.
-  Destroy toolcontext on exit in clvmd (fixes memory pool leaks).
-  Fix lvconvert to not poll mirror if no conversion in progress.
+  Call vgreduce --removemissing automatically to fix missing PVs in dmeventd.
+  Suggest using lvchange --resync when adding leg to not-yet-synced mirror.
+  Destroy toolcontext on clvmd exit to avoid memory pool leaks.
+  Fix lvconvert not to poll mirror if no conversion in progress.
   Fix memory leaks in toolcontext error path.
-  Re-instate partial activation support in clustered mode. (2.02.40)
+  Reinstate partial activation support in clustered mode. (2.02.40)
   Allow metadata correction even when PVs are missing.
   Use 'lvm lvresize' instead of 'lvresize' in fsadm.
   Do not use '-n' realine option in fsadm for busybox compatiblity.
-  Update vgrename, vgsplit, and vgcreate to use vg_lock_newname.
-  Add vg_lock_newname() library function.
+  Add vg_lock_newname() library function for vgrename, vgsplit and vgcreate.
   Round up requested readahead to at least one page and print warning.
   Try to repair vg before actual vgremove when force flag provided.
   Fix possible double release of VG after recovery.
   Add parameter to process_each_vg specifying what to do with inconsistent VG.
-  Unify error messages when procesing inconsistent volume group.
+  Unify error messages when processing inconsistent volume group.
   Use lvconvert --repair instead of vgreduce in mirror dmeventd DSO.
   Introduce lvconvert --use_policies (repair policy according to lvm.conf).
-  Fix clvmd-corosync to match new corosync API.
+  Update clvmd-corosync to match new corosync API.
   Fix makefile to build also shared libraries when running plain make.
   Fix rename of active snapshot with virtual origin.
   Fix convert polling to ignore LV with different UUID.
--- LVM2/WHATS_NEW_DM	2009/06/26 10:57:30	1.279
+++ LVM2/WHATS_NEW_DM	2009/06/30 18:39:31	1.280
@@ -1,8 +1,8 @@
-Version 1.02.33 - 26th June 2009
+Version 1.02.33 - 29th June 2009
 ================================
-  Do not fallback to default major number, provide new function instead (1.02.31)
+  Don't fallback to default major number: use dm_task_set_major_minor. (1.02.31)
   Do not fork daemon when dmeventd cannot be found.
-  Add crypt target handling to libdevmapper node.
+  Add crypt target handling to libdevmapper tree nodes.
   Add splitname command to dmsetup.
   Add subsystem, vg_name, lv_name, lv_layer fields to dmsetup reports.
   Make mempool optional in dm_split_lvm_name().
--- LVM2/daemons/dmeventd/plugins/mirror/dmeventd_mirror.c	2009/06/15 14:47:39	1.24
+++ LVM2/daemons/dmeventd/plugins/mirror/dmeventd_mirror.c	2009/06/30 18:39:31	1.25
@@ -13,6 +13,7 @@
  */
 
 #include "lvm2cmd.h"
+#include "errors.h"
 
 #include <libdevmapper.h>
 #include <libdevmapper-event.h>
@@ -161,14 +162,14 @@
 
 	r = lvm2_run(_lvm_handle, cmd_str);
 
-	if (r == 1) {
+	if (r == ECMD_PROCESSED) {
 		snprintf(cmd_str, CMD_SIZE, "vgreduce --removemissing %s", vg);
 		if (lvm2_run(_lvm_handle, cmd_str) != 1)
 			syslog(LOG_ERR, "Unable to remove failed PVs from VG %s", vg);
 	}
 
 	dm_pool_empty(_mem_pool);  /* FIXME: not safe with multiple threads */
-	return (r == 1) ? 0 : -1;
+	return (r == ECMD_PROCESSED) ? 0 : -1;
 }
 
 void process_event(struct dm_task *dmt,
--- LVM2/lib/commands/errors.h	2007/08/20 20:55:24	1.5
+++ LVM2/lib/commands/errors.h	2009/06/30 18:39:31	1.6
@@ -21,4 +21,6 @@
 #define EINVALID_CMD_LINE	3
 #define ECMD_FAILED		5
 
+/* FIXME Also returned by cmdlib. */
+
 #endif
--- LVM2/lib/metadata/metadata.c	2009/06/10 20:17:32	1.227
+++ LVM2/lib/metadata/metadata.c	2009/06/30 18:39:31	1.228
@@ -2953,12 +2953,11 @@
 		}
 	}
 
-	/* Found vgname, cannot reserve */
+	/* Found vgname so cannot reserve. */
 	unlock_vg(cmd, vgname);
 	return FAILED_EXIST;
 }
 
-
 /*
  * Gets/Sets for external LVM library
  */
--- LVM2/man/lvconvert.8.in	2009/06/04 12:01:15	1.4
+++ LVM2/man/lvconvert.8.in	2009/06/30 18:39:32	1.5
@@ -5,11 +5,10 @@
 .B lvconvert
 \-m|\-\-mirrors Mirrors [\-\-mirrorlog {disk|core}] [\-\-corelog] [\-R|\-\-regionsize MirrorLogRegionSize]
 [\-A|\-\-alloc AllocationPolicy]
-[\-b|\-\-background] [\-i|\-\-interval Seconds]
+[\-b|\-\-background] [\-f|\-\-force] [\-i|\-\-interval Seconds]
 [\-h|\-?|\-\-help]
-[\-v|\-\-verbose]
+[\-v|\-\-verbose] [\-y|\-\-yes]
 [\-\-version]
-.br
 LogicalVolume[Path] [PhysicalVolume[Path]...]
 .br
 
@@ -62,15 +61,13 @@
 .br
 .TP
 .I \-\-repair
-Repair a mirror that has suffered a disk failure. The mirror will be brought
-back into a consistent state, and if possible, the original number of mirrors
-will be restored, if so desired. By default, lvconvert will prompt you whether
-to perform the replacement. If you instead wish to unconditionally replace
-missing devices, you may specify \-y on the commandline and if you instead want
-no replacement to happen at all, you may provide \-f. Additionally, you may use
-"--use-policies" - this option will use the device replacement policy specified
-in lvm.conf, specifically "activation/mirror_log_fault_policy" and
-"activation/mirror_device_fault_policy".
+Repair a mirror after suffering a disk failure. The mirror will be brought back
+into a consistent state.  By default, the original number of mirrors will be
+restored if possible.  Specify \-y on the command line to skip the prompts.
+Use \-f if you do not want any replacement.  Additionally, you may use
+\-\-use-policies to use the device replacement policy specified in lvm.conf,
+viz. activation/mirror_log_fault_policy or
+activation/mirror_device_fault_policy.
 .br
 .TP
 .I \-s, \-\-snapshot
--- LVM2/man/lvs.8.in	2009/06/15 17:09:32	1.8
+++ LVM2/man/lvs.8.in	2009/06/30 18:39:32	1.9
@@ -38,16 +38,17 @@
 Comma-separated ordered list of columns.  Precede the list with '+' to append
 to the default selection of columns instead of replacing it.
 .IP
-Use \fb-o lv_all\fP to select all logical volume columns, and \fb-o seg_all\fP to select all
-logical segment columns.
+Use \fb-o lv_all\fP to select all logical volume columns, and \fb-o seg_all\fP
+to select all logical volume segment columns.
 .IP
 Use \fb-o help\fP to view the full list of columns available.
 .IP
 Column names include:
-lv_uuid, lv_name, lv_attr, lv_major, lv_minor, lv_read_ahead, lv_kernel_major, lv_kernel_minor,
-lv_kernel_read_ahead, lv_size, seg_count, origin, origin_size, snap_percent, copy_percent, move_pv,
-convert_lv, lv_tags, mirror_log, modules, segtype, stripes, stripesize, regionsize, chunksize, seg_start,
-seg_start_pe, seg_size, seg_tags, seg_pe_ranges, devices.
+lv_uuid, lv_name, lv_attr, lv_major, lv_minor, lv_read_ahead, lv_kernel_major,
+lv_kernel_minor, lv_kernel_read_ahead, lv_size, seg_count, origin, origin_size,
+snap_percent, copy_percent, move_pv, convert_lv, lv_tags, mirror_log, modules,
+segtype, stripes, stripesize, regionsize, chunksize, seg_start, seg_start_pe,
+seg_size, seg_tags, seg_pe_ranges, devices.
 .IP
 With \-\-segments, any "seg_" prefixes are optional; otherwise any "lv_"
 prefixes are optional.  Columns mentioned in \fBvgs (8)\fP 
@@ -56,9 +57,9 @@
 The lv_attr bits are: 
 .RS
 .IP 1 3
-Volume type: (m)irrored, (M)irrored without initial sync, (o)rigin, (p)vmove, (s)napshot, 
-invalid (S)napshot, (v)irtual, mirror (i)mage, mirror (I)mage out-of-sync,
-under (c)onversion
+Volume type: (m)irrored, (M)irrored without initial sync, (o)rigin, (p)vmove,
+(s)napshot, invalid (S)napshot, (v)irtual, mirror (i)mage, mirror (I)mage
+out-of-sync, under (c)onversion
 .IP 2 3
 Permissions: (w)riteable, (r)ead-only
 .IP 3 3
--- LVM2/man/pvs.8.in	2009/06/15 17:09:32	1.9
+++ LVM2/man/pvs.8.in	2009/06/30 18:39:32	1.10
@@ -39,7 +39,7 @@
 to the default selection of columns.
 .IP
 Use \fb-o pv_all\fP to select all physical volume columns, and \fb-o pvseg_all\fP
-to select all physical segment columns.
+to select all Physical Volume segment columns.
 .IP
 Use \fb-o help\fP to view the full list of columns available.
 .IP
--- LVM2/tools/commands.h	2009/06/04 12:01:16	1.127
+++ LVM2/tools/commands.h	2009/06/30 18:39:32	1.128
@@ -99,9 +99,11 @@
    "\t[--alloc AllocationPolicy]\n"
    "\t[-b|--background]\n"
    "\t[-d|--debug]\n"
+   "\t[-f|--force]\n"
    "\t[-h|-?|--help]\n"
    "\t[-i|--interval seconds]\n"
    "\t[-v|--verbose]\n"
+   "\t[-y|--yes]\n"
    "\t[--version]" "\n"
    "\tLogicalVolume[Path] [PhysicalVolume[Path]...]\n\n"
 
--- LVM2/tools/lvconvert.c	2009/06/26 11:29:06	1.86
+++ LVM2/tools/lvconvert.c	2009/06/30 18:39:32	1.87
@@ -111,9 +111,10 @@
 	memset(lp, 0, sizeof(*lp));
 
 	if (arg_count(cmd, snapshot_ARG) &&
-	    (arg_count(cmd, mirrorlog_ARG) || arg_count(cmd, mirrors_ARG))) {
-		log_error("--snapshots argument cannot be mixed "
-			  "with --mirrors or --log");
+	    (arg_count(cmd, mirrorlog_ARG) || arg_count(cmd, mirrors_ARG) ||
+	     arg_count(cmd, repair_ARG))) {
+		log_error("--snapshot argument cannot be mixed "
+			  "with --mirrors, --repair or --log");
 		return 0;
 	}
 
@@ -529,7 +530,7 @@
 	}
 
 	if (arg_count(cmd, mirrors_ARG) && repair) {
-		log_error("You can only use one of -m, --repair.");
+		log_error("You may only use one of --mirrors and --repair.");
 		return 0;
 	}
 


^ permalink raw reply	[flat|nested] 13+ messages in thread

* LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT ...
@ 2009-05-21  3:05 agk
  0 siblings, 0 replies; 13+ messages in thread
From: agk @ 2009-05-21  3:05 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2009-05-21 03:04:54

Modified files:
	.              : VERSION VERSION_DM WHATS_NEW WHATS_NEW_DM 
	lib/activate   : activate.c 
	lib/locking    : .exported_symbols cluster_locking.c 
	                 external_locking.c locking.c locking.h 
	                 locking_types.h 
	lib/metadata   : lv_manip.c metadata-exported.h metadata.c 
	                 mirror.c snapshot_manip.c 
	lib/report     : columns.h 
	tools          : lvconvert.c lvcreate.c lvrename.c lvresize.c 
	                 polldaemon.c pvchange.c pvmove.c toollib.c 
	                 vgchange.c vgconvert.c vgextend.c vgmerge.c 
	                 vgreduce.c vgrename.c vgscan.c vgsplit.c 

Log message:
	Pre-release cleanups.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.193&r2=1.194
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION_DM.diff?cvsroot=lvm2&r1=1.7&r2=1.8
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1120&r2=1.1121
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.267&r2=1.268
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/activate.c.diff?cvsroot=lvm2&r1=1.151&r2=1.152
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/locking/.exported_symbols.diff?cvsroot=lvm2&r1=1.2&r2=1.3
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/locking/cluster_locking.c.diff?cvsroot=lvm2&r1=1.34&r2=1.35
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/locking/external_locking.c.diff?cvsroot=lvm2&r1=1.16&r2=1.17
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/locking/locking.c.diff?cvsroot=lvm2&r1=1.59&r2=1.60
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/locking/locking.h.diff?cvsroot=lvm2&r1=1.46&r2=1.47
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/locking/locking_types.h.diff?cvsroot=lvm2&r1=1.16&r2=1.17
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/lv_manip.c.diff?cvsroot=lvm2&r1=1.173&r2=1.174
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata-exported.h.diff?cvsroot=lvm2&r1=1.73&r2=1.74
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.220&r2=1.221
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/mirror.c.diff?cvsroot=lvm2&r1=1.87&r2=1.88
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/snapshot_manip.c.diff?cvsroot=lvm2&r1=1.42&r2=1.43
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/report/columns.h.diff?cvsroot=lvm2&r1=1.36&r2=1.37
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvconvert.c.diff?cvsroot=lvm2&r1=1.75&r2=1.76
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvcreate.c.diff?cvsroot=lvm2&r1=1.188&r2=1.189
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvrename.c.diff?cvsroot=lvm2&r1=1.49&r2=1.50
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvresize.c.diff?cvsroot=lvm2&r1=1.108&r2=1.109
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/polldaemon.c.diff?cvsroot=lvm2&r1=1.12&r2=1.13
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/pvchange.c.diff?cvsroot=lvm2&r1=1.65&r2=1.66
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/pvmove.c.diff?cvsroot=lvm2&r1=1.59&r2=1.60
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/toollib.c.diff?cvsroot=lvm2&r1=1.152&r2=1.153
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgchange.c.diff?cvsroot=lvm2&r1=1.71&r2=1.72
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgconvert.c.diff?cvsroot=lvm2&r1=1.33&r2=1.34
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgextend.c.diff?cvsroot=lvm2&r1=1.39&r2=1.40
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgmerge.c.diff?cvsroot=lvm2&r1=1.54&r2=1.55
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgreduce.c.diff?cvsroot=lvm2&r1=1.90&r2=1.91
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgrename.c.diff?cvsroot=lvm2&r1=1.61&r2=1.62
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgscan.c.diff?cvsroot=lvm2&r1=1.31&r2=1.32
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgsplit.c.diff?cvsroot=lvm2&r1=1.73&r2=1.74

--- LVM2/VERSION	2009/03/03 18:25:05	1.193
+++ LVM2/VERSION	2009/05/21 03:04:52	1.194
@@ -1 +1 @@
-2.02.46-cvs (2009-03-03)
+2.02.46-cvs (2009-05-21)
--- LVM2/VERSION_DM	2009/03/03 18:25:05	1.7
+++ LVM2/VERSION_DM	2009/05/21 03:04:52	1.8
@@ -1 +1 @@
-1.02.32-cvs (2009-03-03)
+1.02.32-cvs (2009-05-21)
--- LVM2/WHATS_NEW	2009/05/20 22:24:48	1.1120
+++ LVM2/WHATS_NEW	2009/05/21 03:04:52	1.1121
@@ -1,9 +1,11 @@
-Version 2.02.46 - 
-================================
-  Inherit read ahead from underlying device.
-  Use lock query instead of activate_lv_excl.
+Version 2.02.46 - 21st May 2009
+===============================
+  Inherit readahead setting from underlying devices during activation.
+  Detect LVs active on remote nodes by querying locks if supported.
   Enable online resizing of mirrors.
   Use suspend with flush when device size was changed during table preload.
+  Implement query_resource_fn for cluster_locking.
+  Support query_resource_fn in locking modules.
   Introduce CLVMD_CMD_LOCK_QUERY command for clvmd.
   Fix pvmove to revert operation if temporary mirror creation fails.
   Fix metadata export for VG with missing PVs.
@@ -11,7 +13,7 @@
   Force max_lv restriction only for newly created LV.
   Remove unneeded import parameter from lv_create_empty.
   Merge lv_is_displayable and lv_is_visible functions.
-  Introduce lv_set_visible & lv_set_invisible functions.
+  Introduce lv_set_visible & lv_set_hidden functions.
   Fix lv_is_visible to handle virtual origin.
   Introduce link_lv_to_vg and unlink_lv_from_vg functions.
   Remove lv_count from VG and use counter function instead.
@@ -20,15 +22,18 @@
   Remove NON_BLOCKING lock flag from tools and set a policy to auto-set.
   Remove snapshot_count from VG and use function instead.
   Fix first_seg() call for empty segment list.
-  Add make install_lvm2 as complement to device-mapper install.
+  Add install_lvm2 makefile target to install only the LVM2 components.
   Reject missing PVs from allocation in toollib.
   Fix PV datalignment for values starting prior to MDA area. (2.02.45)
   Add sparse devices: lvcreate -s --virtualoriginsize (hidden zero origin).
+  Fix minimum width of devices column in reports.
   Add lvs origin_size field.
   Fix linux configure --enable-debug to exclude -O2.
-  Implement lvconvert --repair, for repairing partially failed mirrors.
+  Implement lvconvert --repair for repairing partially-failed mirrors.
   Fix vgreduce --removemissing failure exit code.
   Fix remote metadata backup for clvmd.
+  Introduce unlock_and_release_vg macro.
+  Introduce vg_release() to be called to free every struct volume_group.
   Alloc PV internal structure from VG mempool if possible.
   Fix metadata backup to run after vg_commit always.
   Tidy clvmd volume lock cache functions.
@@ -36,12 +41,11 @@
   Fix pvs -a output to not read volume groups from non-PV devices.
   Add MMC (mmcblk) device type to filters.
   Introduce memory pools per volume group (to reduce memory for large VGs).
-  Add memory pool leaks detection.
-  Use copy of PV structure when manipulating with global PV lists.
+  Use copy of PV structure when manipulating global PV lists.
   Always return exit error status when locking of volume group fails.
   Fix mirror log convert validation question.
   Avoid referencing files from DESTDIR during build process.
-  Avoid creating some static libraries without static_link.
+  Avoid creating some static libraries unless configured --enable-static_link.
   Enable use of cached metadata for pvs and pvdisplay commands.
   Add missing 'device-mapper' internal subdir build dependency.
   Fix memory leak in mirror allocation code.
@@ -52,14 +56,15 @@
   Block SIGTERM & SIGINT in clvmd subthreads.
   Detect and conditionally wipe swapspace signatures in pvcreate.
   Fix maximal volume count check for snapshots if max_lv set for volume group.
-  Fix lvcreate to remove cow volume if the snapshot creation fails.
+  Fix lvcreate to remove unused cow volume if the snapshot creation fails.
   Fix error messages when PV uuid or pe_start reading fails.
-  Rename liblvm.a to liblvm-internal.a and build new application library.
+  Build new liblvm application-level library.
+  Rename liblvm.a to liblvm-internal.a.
   Flush memory pool and fix locking in clvmd refresh and backup command.
-  Fix unlocks in clvmd-corosync. Broken in 2.02.45.
+  Fix unlocks in clvmd-corosync. (2.02.45)
   Fix error message when adding metadata directory to internal list fails.
   Fix size and error message of memory allocation at backup initialization.
-  Remove old metadata backup file after renaming vg.
+  Remove old metadata backup file after renaming VG.
   Restore log_suppress state when metadata backup file is up-to-date.
 
 Version 2.02.45 - 3rd March 2009
--- LVM2/WHATS_NEW_DM	2009/05/20 22:44:10	1.267
+++ LVM2/WHATS_NEW_DM	2009/05/21 03:04:52	1.268
@@ -1,5 +1,5 @@
-Version 1.02.32 - 
-================================
+Version 1.02.32 - 21st May 2009
+===============================
   Only generate libdevmapper.a when configured to link statically.
   Export dm_tree_node_size_changed() from libdevmapper.
   Propagate the table size_changed property up the dm device tree.
--- LVM2/lib/activate/activate.c	2009/05/20 12:58:03	1.151
+++ LVM2/lib/activate/activate.c	2009/05/21 03:04:52	1.152
@@ -711,7 +711,7 @@
 	 */
 	if (activate_lv_excl(lv->vg->cmd, lv)) {
 		deactivate_lv(lv->vg->cmd, lv);
-			return 0;
+		return 0;
 	}
 
 	/*
--- LVM2/lib/locking/.exported_symbols	2009/05/20 12:58:04	1.2
+++ LVM2/lib/locking/.exported_symbols	2009/05/21 03:04:53	1.3
@@ -1,5 +1,5 @@
 locking_init
 locking_end
 lock_resource
-lock_resource_query
+query_resource
 reset_locking
--- LVM2/lib/locking/cluster_locking.c	2009/05/19 10:39:00	1.34
+++ LVM2/lib/locking/cluster_locking.c	2009/05/21 03:04:53	1.35
@@ -33,7 +33,7 @@
 
 #ifndef CLUSTER_LOCKING_INTERNAL
 int lock_resource(struct cmd_context *cmd, const char *resource, uint32_t flags);
-int lock_resource_query(const char *resource, int *mode);
+int query_resource(const char *resource, int *mode);
 void locking_end(void);
 int locking_init(int type, struct config_tree *cf, uint32_t *flags);
 #endif
@@ -472,9 +472,9 @@
 }
 
 #ifdef CLUSTER_LOCKING_INTERNAL
-static int _lock_resource_query(const char *resource, int *mode)
+static int _query_resource(const char *resource, int *mode)
 #else
-int lock_resource_query(const char *resource, int *mode)
+int query_resource(const char *resource, int *mode)
 #endif
 {
 	int i, status, len, num_responses, saved_errno;
@@ -549,7 +549,7 @@
 int init_cluster_locking(struct locking_type *locking, struct cmd_context *cmd)
 {
 	locking->lock_resource = _lock_resource;
-	locking->lock_resource_query = _lock_resource_query;
+	locking->query_resource = _query_resource;
 	locking->fin_locking = _locking_end;
 	locking->reset_locking = _reset_locking;
 	locking->flags = LCK_PRE_MEMLOCK | LCK_CLUSTERED;
--- LVM2/lib/locking/external_locking.c	2009/05/20 12:58:04	1.16
+++ LVM2/lib/locking/external_locking.c	2009/05/21 03:04:53	1.17
@@ -89,8 +89,8 @@
 		return 0;
 	}
 
-	if (!(_lock_query_fn = dlsym(_locking_lib, "lock_resource_query")))
-		log_warn("WARNING: %s: _lock_resource_query() missing: "
+	if (!(_lock_query_fn = dlsym(_locking_lib, "query_resource")))
+		log_warn("WARNING: %s: _query_resource() missing: "
 			 "Using inferior activation method.", libname);
 
 	log_verbose("Loaded external locking library %s", libname);
--- LVM2/lib/locking/locking.c	2009/05/20 12:58:04	1.59
+++ LVM2/lib/locking/locking.c	2009/05/21 03:04:53	1.60
@@ -489,13 +489,13 @@
 	if (!locking_is_clustered())
 		return 0;
 
-	if (!_locking.lock_resource_query)
+	if (!_locking.query_resource)
 		return -1;
 
 	/*
 	 * If an error occured, expect that volume is active
 	 */
-	if (!_locking.lock_resource_query(vol, &mode)) {
+	if (!_locking.query_resource(vol, &mode)) {
 		stack;
 		return 1;
 	}
--- LVM2/lib/locking/locking.h	2009/05/19 10:39:00	1.46
+++ LVM2/lib/locking/locking.h	2009/05/21 03:04:53	1.47
@@ -118,9 +118,11 @@
 	lock_vol(cmd, (lv)->lvid.s, flags | LCK_LV_CLUSTERED(lv))
 
 #define unlock_vg(cmd, vol)	lock_vol(cmd, vol, LCK_VG_UNLOCK)
-#define unlock_release_vg(cmd, vg, vol) do { unlock_vg(cmd, vol); \
-					     vg_release(vg); \
-					} while (0)
+#define unlock_and_release_vg(cmd, vg, vol) \
+	do { \
+		unlock_vg(cmd, vol); \
+		vg_release(vg); \
+	} while (0)
 
 #define resume_lv(cmd, lv)	lock_lv_vol(cmd, lv, LCK_LV_RESUME)
 #define suspend_lv(cmd, lv)	lock_lv_vol(cmd, lv, LCK_LV_SUSPEND | LCK_HOLD)
--- LVM2/lib/locking/locking_types.h	2009/05/19 10:39:00	1.16
+++ LVM2/lib/locking/locking_types.h	2009/05/21 03:04:53	1.17
@@ -18,7 +18,7 @@
 
 typedef int (*lock_resource_fn) (struct cmd_context * cmd, const char *resource,
 				 uint32_t flags);
-typedef int (*lock_resource_query_fn) (const char *resource, int *mode);
+typedef int (*query_resource_fn) (const char *resource, int *mode);
 
 typedef void (*fin_lock_fn) (void);
 typedef void (*reset_lock_fn) (void);
@@ -29,7 +29,7 @@
 struct locking_type {
 	uint32_t flags;
 	lock_resource_fn lock_resource;
-	lock_resource_query_fn lock_resource_query;
+	query_resource_fn query_resource;
 
 	reset_lock_fn reset_locking;
 	fin_lock_fn fin_locking;
--- LVM2/lib/metadata/lv_manip.c	2009/05/20 09:55:34	1.173
+++ LVM2/lib/metadata/lv_manip.c	2009/05/21 03:04:53	1.174
@@ -1503,7 +1503,7 @@
 		if (!set_lv_segment_area_lv(seg, m, sub_lvs[m - old_area_count],
 					    0, status))
 			return_0;
-		lv_set_invisible(sub_lvs[m - old_area_count]);
+		lv_set_hidden(sub_lvs[m - old_area_count]);
 	}
 
 	lv->status |= MIRRORED;
@@ -1982,14 +1982,14 @@
 	log_debug("LV %s in VG %s is now visible.",  lv->name, lv->vg->name);
 }
 
-void lv_set_invisible(struct logical_volume *lv)
+void lv_set_hidden(struct logical_volume *lv)
 {
 	if (!lv_is_visible(lv))
 		return;
 
 	lv->status &= ~VISIBLE_LV;
 
-	log_debug("LV %s in VG %s is now invisible.",  lv->name, lv->vg->name);
+	log_debug("LV %s in VG %s is now hidden.",  lv->name, lv->vg->name);
 }
 
 int lv_remove_single(struct cmd_context *cmd, struct logical_volume *lv,
--- LVM2/lib/metadata/metadata-exported.h	2009/05/13 21:29:10	1.73
+++ LVM2/lib/metadata/metadata-exported.h	2009/05/21 03:04:53	1.74
@@ -372,7 +372,7 @@
 int link_lv_to_vg(struct volume_group *vg, struct logical_volume *lv);
 int unlink_lv_from_vg(struct logical_volume *lv);
 void lv_set_visible(struct logical_volume *lv);
-void lv_set_invisible(struct logical_volume *lv);
+void lv_set_hidden(struct logical_volume *lv);
 
 /* Set full_scan to 1 to re-read every (filtered) device label */
 struct dm_list *get_vgnames(struct cmd_context *cmd, int full_scan);
@@ -442,7 +442,12 @@
 int vg_split_mdas(struct cmd_context *cmd, struct volume_group *vg_from,
 		  struct volume_group *vg_to);
 
+/*
+ * vg_release() must be called on every struct volume_group allocated
+ * by vg_create() or vg_read_internal() to free it when no longer required.
+ */
 void vg_release(struct volume_group *vg);
+
 /* Manipulate LVs */
 struct logical_volume *lv_create_empty(const char *name,
 				       union lvid *lvid,
--- LVM2/lib/metadata/metadata.c	2009/05/20 11:09:49	1.220
+++ LVM2/lib/metadata/metadata.c	2009/05/21 03:04:53	1.221
@@ -2633,12 +2633,12 @@
 	if (!(vg = vg_read_internal(cmd, vg_name, vgid, &consistent)) ||
 	    ((misc_flags & FAIL_INCONSISTENT) && !consistent)) {
 		log_error("Volume group \"%s\" not found", vg_name);
-		unlock_release_vg(cmd, vg, vg_name);
+		unlock_and_release_vg(cmd, vg, vg_name);
 		return NULL;
 	}
 
 	if (!vg_check_status(vg, status_flags)) {
-		unlock_release_vg(cmd, vg, vg_name);
+		unlock_and_release_vg(cmd, vg, vg_name);
 		return NULL;
 	}
 
--- LVM2/lib/metadata/mirror.c	2009/05/13 21:28:31	1.87
+++ LVM2/lib/metadata/mirror.c	2009/05/21 03:04:53	1.88
@@ -303,7 +303,7 @@
 		return 0;
 	}
 
-	lv_set_invisible(log_lv);
+	lv_set_hidden(log_lv);
 
 	if (was_active && !activate_lv(cmd, log_lv))
 		return_0;
@@ -1340,7 +1340,7 @@
 {
 	seg->log_lv = log_lv;
 	log_lv->status |= MIRROR_LOG;
-	lv_set_invisible(log_lv);
+	lv_set_hidden(log_lv);
 	return add_seg_to_segs_using_this_lv(log_lv, seg);
 }
 
@@ -1466,7 +1466,7 @@
 	    !(log_lv = _set_up_mirror_log(cmd, ah, lv, log_count, region_size,
 					  alloc, mirror_in_sync()))) {
 		stack;
-		goto out_remove_imgs;
+		goto out_remove_images;
 	}
 
 	/* The log initialization involves vg metadata commit.
@@ -1498,7 +1498,7 @@
 			       region_size)) {
 		log_error("Aborting. Failed to add mirror segment. "
 			  "Remove new LV and retry.");
-		goto out_remove_imgs;
+		goto out_remove_images;
 	}
 
 	if (log_count && !attach_mirror_log(first_seg(lv), log_lv))
@@ -1517,7 +1517,7 @@
 		else
 			backup(log_lv->vg);
 	}
-  out_remove_imgs:
+  out_remove_images:
 	alloc_destroy(ah);
 	return 0;
 }
--- LVM2/lib/metadata/snapshot_manip.c	2009/05/13 21:28:31	1.42
+++ LVM2/lib/metadata/snapshot_manip.c	2009/05/21 03:04:53	1.43
@@ -68,7 +68,7 @@
 	seg->origin = origin;
 	seg->cow = cow;
 
-	lv_set_invisible(cow);
+	lv_set_hidden(cow);
 
 	cow->snapshot = seg;
 
--- LVM2/lib/report/columns.h	2009/05/12 19:12:10	1.36
+++ LVM2/lib/report/columns.h	2009/05/21 03:04:53	1.37
@@ -29,18 +29,17 @@
  * 3. Field type.  This must be either 'STR' or 'NUM'.
  * 4. Report heading.  This is the field heading that is displayed by the
  * reporting commands.
- * 5. Data value pointer.  This argument is is always a member of the
- * containing struct.  In some cases, the member points to the data value
- * of the field (for example, lv_uuid - see _uuid_disp()).  In other cases
- * it is pointer that may be used to derive the data value (for example,
- * seg_count - see _lvsegcount_disp()).  In the FIELD macro definition,
- * this is used in an offset calculation to derive the offset to the
- * data value from the containing struct base address.  Note that in some
+ * 5. Data value pointer.  This argument is always a member of the
+ * containing struct.  It may point directly to the data value (for example,
+ * lv_uuid - see _uuid_disp()) or may be used to derive the data value (for
+ * example, seg_count - see _lvsegcount_disp()).  In the FIELD macro
+ * definition, it is used in an offset calculation to derive the offset to
+ * the data value from the containing struct base address.  Note that in some
  * cases, the argument is the first member of the struct, in which case the
  * data value pointer points to the start of the struct itself (for example,
  * 'lvid' field of struct 'lv').
  * 6. Minimum display width.  This is the minimum width used to display
- * the field value.
+ * the field value, typically matching the width of the column heading.
  * 7. Display function identifier.  Used to derive the full name of the
  * function that displays this field.  Derivation is done by appending '_'
  * then prepending this argument to '_disp'.  For example, if this argument
--- LVM2/tools/lvconvert.c	2009/05/19 10:27:47	1.75
+++ LVM2/tools/lvconvert.c	2009/05/21 03:04:53	1.76
@@ -371,56 +371,61 @@
 	if (seg_type(lvseg, s) == AREA_LV) {
 		if (seg_lv(lvseg, s)->status & PARTIAL_LV)
 			return 1;
-	} else if (seg_type(lvseg, s) == AREA_PV) {
-		if (seg_pv(lvseg, s)->status & MISSING_PV)
-			return 1;
-	}
+	} else if ((seg_type(lvseg, s) == AREA_PV) &&
+		   (seg_pv(lvseg, s)->status & MISSING_PV))
+		return 1;
+
 	return 0;
 }
 
 /* FIXME we want to handle mirror stacks here... */
-static int _count_failed_mirrors(struct logical_volume *lv)
+static int _failed_mirrors_count(struct logical_volume *lv)
 {
 	struct lv_segment *lvseg;
 	int ret = 0;
 	int s;
+
 	dm_list_iterate_items(lvseg, &lv->segments) {
 		if (!seg_is_mirrored(lvseg))
 			return -1;
-		for(s = 0; s < lvseg->area_count; ++s) {
+		for (s = 0; s < lvseg->area_count; s++)
 			if (_area_missing(lvseg, s))
-				++ ret;
-		}
+				ret++;
 	}
+
 	return ret;
 }
 
 static struct dm_list *_failed_pv_list(struct volume_group *vg)
 {
-	struct dm_list *r;
+	struct dm_list *failed_pvs;
 	struct pv_list *pvl, *new_pvl;
 
-	if (!(r = dm_pool_alloc(vg->vgmem, sizeof(*r)))) {
-		log_error("Allocation of list failed");
-		return_0;
+	if (!(failed_pvs = dm_pool_alloc(vg->vgmem, sizeof(*failed_pvs)))) {
+		log_error("Allocation of list of failed_pvs failed.");
+		return_NULL;
 	}
 
-	dm_list_init(r);
+	dm_list_init(failed_pvs);
+
 	dm_list_iterate_items(pvl, &vg->pvs) {
 		if (!(pvl->pv->status & MISSING_PV))
 			continue;
 
 		if (!(new_pvl = dm_pool_alloc(vg->vgmem, sizeof(*new_pvl)))) {
-			log_error("Unable to allocate physical volume list.");
-			return_0;
+			log_error("Allocation of failed_pvs list entry failed.");
+			return_NULL;
 		}
 		new_pvl->pv = pvl->pv;
-		dm_list_add(r, &new_pvl->list);
+		dm_list_add(failed_pvs, &new_pvl->list);
 	}
-	return r;
+
+	return failed_pvs;
 }
 
-/* walk down the stacked mirror LV to the original mirror LV */
+/*
+ * Walk down the stacked mirror LV to the original mirror LV.
+ */
 static struct logical_volume *_original_lv(struct logical_volume *lv)
 {
 	struct logical_volume *next_lv = lv, *tmp_lv;
@@ -431,8 +436,8 @@
 	return next_lv;
 }
 
-static int lvconvert_mirrors(struct cmd_context * cmd, struct logical_volume * lv,
-			     struct lvconvert_params *lp)
+static int _lvconvert_mirrors(struct cmd_context *cmd, struct logical_volume *lv,
+			      struct lvconvert_params *lp)
 {
 	struct lv_segment *seg;
 	uint32_t existing_mirrors;
@@ -485,7 +490,7 @@
 			log_error("The mirror is consistent, nothing to repair.");
 			return 0;
 		}
-		if ((failed_mirrors = _count_failed_mirrors(lv)) < 0)
+		if ((failed_mirrors = _failed_mirrors_count(lv)) < 0)
 			return_0;
 		lp->mirrors -= failed_mirrors;
 		log_error("Mirror status: %d/%d legs failed.",
@@ -828,7 +833,7 @@
 	} else if (arg_count(cmd, mirrors_ARG) || (lv->status & MIRRORED)) {
 		if (!archive(lv->vg))
 			return ECMD_FAILED;
-		if (!lvconvert_mirrors(cmd, lv, lp))
+		if (!_lvconvert_mirrors(cmd, lv, lp))
 			return ECMD_FAILED;
 	}
 
--- LVM2/tools/lvcreate.c	2009/05/13 21:29:10	1.188
+++ LVM2/tools/lvcreate.c	2009/05/21 03:04:53	1.189
@@ -998,6 +998,6 @@
 	if (!_lvcreate(cmd, vg, &lp))
 		r = ECMD_FAILED;
 
-	unlock_release_vg(cmd, vg, lp.vg_name);
+	unlock_and_release_vg(cmd, vg, lp.vg_name);
 	return r;
 }
--- LVM2/tools/lvrename.c	2009/04/10 10:01:38	1.49
+++ LVM2/tools/lvrename.c	2009/05/21 03:04:53	1.50
@@ -121,6 +121,6 @@
 
 	r = ECMD_PROCESSED;
 error:
-	unlock_release_vg(cmd, vg, vg_name);
+	unlock_and_release_vg(cmd, vg, vg_name);
 	return r;
 }
--- LVM2/tools/lvresize.c	2009/05/20 09:52:37	1.108
+++ LVM2/tools/lvresize.c	2009/05/21 03:04:53	1.109
@@ -681,7 +681,7 @@
 	if (!(r = _lvresize(cmd, vg, &lp)))
 		stack;
 
-	unlock_release_vg(cmd, vg, lp.vg_name);
+	unlock_and_release_vg(cmd, vg, lp.vg_name);
 
 	return r;
 }
--- LVM2/tools/polldaemon.c	2009/04/10 10:01:38	1.12
+++ LVM2/tools/polldaemon.c	2009/05/21 03:04:53	1.13
@@ -157,17 +157,17 @@
 							     parms->lv_type))) {
 			log_error("ABORTING: Can't find mirror LV in %s for %s",
 				  vg->name, name);
-			unlock_release_vg(cmd, vg, vg->name);
+			unlock_and_release_vg(cmd, vg, vg->name);
 			return 0;
 		}
 
 		if (!_check_mirror_status(cmd, vg, lv_mirr, name, parms,
 					  &finished)) {
-			unlock_release_vg(cmd, vg, vg->name);
+			unlock_and_release_vg(cmd, vg, vg->name);
 			return 0;
 		}
 
-		unlock_release_vg(cmd, vg, vg->name);
+		unlock_and_release_vg(cmd, vg, vg->name);
 	}
 
 	return 1;
--- LVM2/tools/pvchange.c	2009/04/10 10:01:38	1.65
+++ LVM2/tools/pvchange.c	2009/05/21 03:04:53	1.66
@@ -201,7 +201,7 @@
 	log_print("Physical volume \"%s\" changed", pv_name);
 	r = 1;
 out:
-	unlock_release_vg(cmd, vg, vg_name);
+	unlock_and_release_vg(cmd, vg, vg_name);
 	return r;
 
 }
--- LVM2/tools/pvmove.c	2009/05/19 09:51:03	1.59
+++ LVM2/tools/pvmove.c	2009/05/21 03:04:53	1.60
@@ -459,7 +459,7 @@
 	/* LVs are all in status LOCKED */
 	r = ECMD_PROCESSED;
 out:
-	unlock_release_vg(cmd, vg, pv_vg_name(pv));
+	unlock_and_release_vg(cmd, vg, pv_vg_name(pv));
 	return r;
 }
 
--- LVM2/tools/toollib.c	2009/04/25 01:18:00	1.152
+++ LVM2/tools/toollib.c	2009/05/21 03:04:53	1.153
@@ -319,7 +319,7 @@
 		}
 
 		if (!vg_check_status(vg, CLUSTERED)) {
-			unlock_release_vg(cmd, vg, vgname);
+			unlock_and_release_vg(cmd, vg, vgname);
 			if (ret_max < ECMD_FAILED)
 				ret_max = ECMD_FAILED;
 			continue;
@@ -350,7 +350,7 @@
 
 		ret = process_each_lv_in_vg(cmd, vg, &lvnames, tags_arg,
 					    handle, process_single);
-		unlock_release_vg(cmd, vg, vgname);
+		unlock_and_release_vg(cmd, vg, vgname);
 		if (ret > ret_max)
 			ret_max = ret;
 		if (sigint_caught())
@@ -469,7 +469,7 @@
 	}
 
 	if (!vg_check_status(vg, CLUSTERED)) {
-		unlock_release_vg(cmd, vg, vg_name);
+		unlock_and_release_vg(cmd, vg, vg_name);
 		return ECMD_FAILED;
 	}
 
@@ -477,7 +477,7 @@
 		/* Only process if a tag matches or it's on arg_vgnames */
 		if (!str_list_match_item(arg_vgnames, vg_name) &&
 		    !str_list_match_list(tags, &vg->tags)) {
-			unlock_release_vg(cmd, vg, vg_name);
+			unlock_and_release_vg(cmd, vg, vg_name);
 			return ret_max;
 		}
 	}
@@ -487,7 +487,7 @@
 		ret_max = ret;
 	}
 
-	unlock_release_vg(cmd, vg, vg_name);
+	unlock_and_release_vg(cmd, vg, vg_name);
 
 	return ret_max;
 }
@@ -771,12 +771,12 @@
 					continue;
 				}
 				if (!consistent) {
-					unlock_release_vg(cmd, vg, sll->str);
+					unlock_and_release_vg(cmd, vg, sll->str);
 					continue;
 				}
 
 				if (!vg_check_status(vg, CLUSTERED)) {
-					unlock_release_vg(cmd, vg, sll->str);
+					unlock_and_release_vg(cmd, vg, sll->str);
 					continue;
 				}
 
@@ -784,7 +784,7 @@
 							    handle,
 							    process_single);
 
-				unlock_release_vg(cmd, vg, sll->str);
+				unlock_and_release_vg(cmd, vg, sll->str);
 
 				if (ret > ret_max)
 					ret_max = ret;
--- LVM2/tools/vgchange.c	2009/05/13 21:27:44	1.71
+++ LVM2/tools/vgchange.c	2009/05/21 03:04:53	1.72
@@ -532,7 +532,7 @@
 	}
 
 	if (!consistent) {
-		unlock_release_vg(cmd, vg, vg_name);
+		unlock_and_release_vg(cmd, vg, vg_name);
 		dev_close_all();
 		log_error("Volume group \"%s\" inconsistent", vg_name);
 		if (!(vg = recover_vg(cmd, vg_name, LCK_VG_WRITE)))
--- LVM2/tools/vgconvert.c	2009/04/10 10:01:39	1.33
+++ LVM2/tools/vgconvert.c	2009/05/21 03:04:53	1.34
@@ -38,7 +38,7 @@
 	}
 
 	if (!consistent) {
-		unlock_release_vg(cmd, vg, vg_name);
+		unlock_and_release_vg(cmd, vg, vg_name);
 		dev_close_all();
 		log_error("Volume group \"%s\" inconsistent", vg_name);
 		if (!(vg = recover_vg(cmd, vg_name, LCK_VG_WRITE)))
--- LVM2/tools/vgextend.c	2009/05/13 13:02:56	1.39
+++ LVM2/tools/vgextend.c	2009/05/21 03:04:53	1.40
@@ -76,7 +76,7 @@
 	r = ECMD_PROCESSED;
 
 error:
-	unlock_release_vg(cmd, vg, vg_name);
+	unlock_and_release_vg(cmd, vg, vg_name);
 	unlock_vg(cmd, VG_ORPHANS);
 	return r;
 }
--- LVM2/tools/vgmerge.c	2009/05/13 21:22:57	1.54
+++ LVM2/tools/vgmerge.c	2009/05/21 03:04:54	1.55
@@ -38,7 +38,7 @@
 					 LCK_VG_WRITE,
 					 CLUSTERED | EXPORTED_VG | LVM_WRITE,
 					 CORRECT_INCONSISTENT | FAIL_INCONSISTENT))) {
-		unlock_release_vg(cmd, vg_to, vg_name_to);
+		unlock_and_release_vg(cmd, vg_to, vg_name_to);
 		return ECMD_FAILED;
 	}
 
@@ -116,8 +116,8 @@
 		  vg_from->name, vg_to->name);
 	r = ECMD_PROCESSED;
 bad:
-	unlock_release_vg(cmd, vg_from, vg_name_from);
-	unlock_release_vg(cmd, vg_to, vg_name_to);
+	unlock_and_release_vg(cmd, vg_from, vg_name_from);
+	unlock_and_release_vg(cmd, vg_to, vg_name_to);
 	return r;
 }
 
--- LVM2/tools/vgreduce.c	2009/05/13 13:02:56	1.90
+++ LVM2/tools/vgreduce.c	2009/05/21 03:04:54	1.91
@@ -454,7 +454,7 @@
 	log_print("Removed \"%s\" from volume group \"%s\"", name, vg->name);
 	r = ECMD_PROCESSED;
 bad:
-	unlock_release_vg(cmd, orphan_vg, VG_ORPHANS);
+	unlock_and_release_vg(cmd, orphan_vg, VG_ORPHANS);
 	return r;
 }
 
@@ -574,7 +574,7 @@
 
 	}
 out:
-	unlock_release_vg(cmd, vg, vg_name);
+	unlock_and_release_vg(cmd, vg, vg_name);
 
 	return ret;
 
--- LVM2/tools/vgrename.c	2009/05/13 13:02:56	1.61
+++ LVM2/tools/vgrename.c	2009/05/21 03:04:54	1.62
@@ -83,7 +83,7 @@
 	}
 
 	if (!vg_check_status(vg, CLUSTERED | LVM_WRITE)) {
-		unlock_release_vg(cmd, vg, vg_name_old);
+		unlock_and_release_vg(cmd, vg, vg_name_old);
 		return 0;
 	}
 
@@ -91,7 +91,7 @@
 	vg_check_status(vg, EXPORTED_VG);
 
 	if (lvs_in_vg_activated_by_uuid_only(vg)) {
-		unlock_release_vg(cmd, vg, vg_name_old);
+		unlock_and_release_vg(cmd, vg, vg_name_old);
 		log_error("Volume group \"%s\" still has active LVs",
 			  vg_name_old);
 		/* FIXME Remove this restriction */
@@ -101,7 +101,7 @@
 	log_verbose("Checking for new volume group \"%s\"", vg_name_new);
 
 	if (!lock_vol(cmd, vg_name_new, LCK_VG_WRITE)) {
-		unlock_release_vg(cmd, vg, vg_name_old);
+		unlock_and_release_vg(cmd, vg, vg_name_old);
 		log_error("Can't get lock for %s", vg_name_new);
 		return 0;
 	}
@@ -151,8 +151,8 @@
 	backup(vg);
 	backup_remove(cmd, vg_name_old);
 
-	unlock_release_vg(cmd, vg_new, vg_name_new);
-	unlock_release_vg(cmd, vg, vg_name_old);
+	unlock_and_release_vg(cmd, vg_new, vg_name_new);
+	unlock_and_release_vg(cmd, vg, vg_name_old);
 
 	log_print("Volume group \"%s\" successfully renamed to \"%s\"",
 		  vg_name_old, vg_name_new);
@@ -164,8 +164,8 @@
 	return 1;
 
       error:
-	unlock_release_vg(cmd, vg_new, vg_name_new);
-	unlock_release_vg(cmd, vg, vg_name_old);
+	unlock_and_release_vg(cmd, vg_new, vg_name_new);
+	unlock_and_release_vg(cmd, vg, vg_name_old);
 	return 0;
 }
 
--- LVM2/tools/vgscan.c	2009/04/10 10:01:39	1.31
+++ LVM2/tools/vgscan.c	2009/05/21 03:04:54	1.32
@@ -25,7 +25,7 @@
 	}
 
 	if (!consistent) {
-		unlock_release_vg(cmd, vg, vg_name);
+		unlock_and_release_vg(cmd, vg, vg_name);
 		dev_close_all();
 		log_error("Volume group \"%s\" inconsistent", vg_name);
 		/* Don't allow partial switch to this program */
--- LVM2/tools/vgsplit.c	2009/05/13 21:22:57	1.73
+++ LVM2/tools/vgsplit.c	2009/05/21 03:04:54	1.74
@@ -323,7 +323,7 @@
 	log_verbose("Checking for new volume group \"%s\"", vg_name_to);
 	if (!lock_vol(cmd, vg_name_to, LCK_VG_WRITE)) {
 		log_error("Can't get lock for %s", vg_name_to);
-		unlock_release_vg(cmd, vg_from, vg_name_from);
+		unlock_and_release_vg(cmd, vg_from, vg_name_from);
 		return ECMD_FAILED;
 	}
 
@@ -466,7 +466,7 @@
 	r = ECMD_PROCESSED;
 
 bad:
-	unlock_release_vg(cmd, vg_from, vg_name_from);
-	unlock_release_vg(cmd, vg_to, vg_name_to);
+	unlock_and_release_vg(cmd, vg_from, vg_name_from);
+	unlock_and_release_vg(cmd, vg_to, vg_name_to);
 	return r;
 }


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2011-02-04 22:07 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-09-27 19:09 LVM2 ./VERSION ./VERSION_DM ./WHATS_NEW ./WHAT agk
  -- strict thread matches above, loose matches on Subject: below --
2011-02-04 22:07 agk
2010-11-08 19:37 agk
2010-10-25 13:54 agk
2010-09-22  1:36 agk
2010-06-30 14:04 agk
2010-05-17 18:39 agk
2010-04-30 14:49 agk
2010-02-16  0:27 agk
2010-02-15 23:53 agk
2010-02-02 14:03 agk
2009-06-30 18:39 agk
2009-05-21  3:05 agk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).