public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] gentoo-x86 commit in sys-fs/lvm2/files: lvm2-2.02.51-as-needed.patch lvm.conf-2.02.51.patch lvm2-2.02.51-device-mapper-export-format.patch
@ 2009-08-27  0:34 Robin H. Johnson (robbat2)
  0 siblings, 0 replies; only message in thread
From: Robin H. Johnson (robbat2) @ 2009-08-27  0:34 UTC (permalink / raw
  To: gentoo-commits

robbat2     09/08/27 00:34:27

  Added:                lvm2-2.02.51-as-needed.patch lvm.conf-2.02.51.patch
                        lvm2-2.02.51-device-mapper-export-format.patch
  Log:
  Version bump. Change the pvmetadatacopies default back to 1 to cut down on pvresize issues per ongoing bug #252144.
  (Portage version: 2.2_rc38/cvs/Linux x86_64)

Revision  Changes    Path
1.1                  sys-fs/lvm2/files/lvm2-2.02.51-as-needed.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/lvm2/files/lvm2-2.02.51-as-needed.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/lvm2/files/lvm2-2.02.51-as-needed.patch?rev=1.1&content-type=text/plain

Index: lvm2-2.02.51-as-needed.patch
===================================================================
Compile-fix with --as-needed.

To ensure correct output when --as-needed are in the linker flags, the order of
flags to the linker (directly or via the compiler) must explictly only include
libraries and objects AFTER all compiler flags, linker flags and linker
directory arguments.

X-Gentoo-Bug: #217644
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Ported-from: lvm2-2.02.48-as-needed.patch

diff -Naru --exclude '*.rej' --exclude '*.orig' LVM2.2.02.51.orig/daemons/clogd/Makefile LVM2.2.02.51/daemons/clogd/Makefile
--- LVM2.2.02.51.orig/daemons/clogd/Makefile	2009-07-28 21:14:12.000000000 +0000
+++ LVM2.2.02.51/daemons/clogd/Makefile	2009-08-27 00:09:53.215521890 +0000
@@ -45,12 +45,12 @@
 	else \
 		echo '-L/usr/lib/openais -L/usr/lib -L/lib'; \
 	fi)
-LDFLAGS += -lcpg -lSaCkpt -lext2fs -ldevmapper
+LIBS += -lcpg -lSaCkpt -lext2fs -ldevmapper
 
 all: ${TARGET}
 
 clogd: ${SOURCES}
-	${CC} ${CFLAGS} -o $@ $^ ${LDFLAGS}
+	${CC} ${CFLAGS} ${LDFLAGS} -o $@ $^ ${LIBS}
 
 no_clogd_kernel_headers:
 	echo "Unable to find clogd kernel headers"
diff -Naru --exclude '*.rej' --exclude '*.orig' LVM2.2.02.51.orig/daemons/clvmd/Makefile.in LVM2.2.02.51/daemons/clvmd/Makefile.in
--- LVM2.2.02.51.orig/daemons/clvmd/Makefile.in	2009-03-10 12:10:12.000000000 +0000
+++ LVM2.2.02.51/daemons/clvmd/Makefile.in	2009-08-27 00:06:20.642231272 +0000
@@ -101,7 +101,7 @@
 	install_clvmd
 
 clvmd: $(OBJECTS) $(top_srcdir)/lib/liblvm-internal.a
-	$(CC) -o clvmd $(OBJECTS) $(CFLAGS) $(LDFLAGS) \
+	$(CC) $(CFLAGS) $(LDFLAGS) -o clvmd $(OBJECTS) \
 		$(LVMLIBS) $(LMLIBS) $(LIBS)
 
 .PHONY: install_clvmd
diff -Naru --exclude '*.rej' --exclude '*.orig' LVM2.2.02.51.orig/daemons/dmeventd/Makefile.in LVM2.2.02.51/daemons/dmeventd/Makefile.in
--- LVM2.2.02.51.orig/daemons/dmeventd/Makefile.in	2009-08-27 00:04:46.805552570 +0000
+++ LVM2.2.02.51/daemons/dmeventd/Makefile.in	2009-08-27 00:06:20.642231272 +0000
@@ -41,12 +41,12 @@
 all: dmeventd
 device-mapper: dmeventd $(LIB_STATIC)
 
-LDFLAGS += -ldl -ldevmapper -lpthread
-CLDFLAGS += -ldl -ldevmapper -lpthread
+LIBS += -ldl -ldevmapper -lpthread
 
 dmeventd: $(LIB_SHARED) $(LIB_STATIC) $(VERSIONED_SHLIB) dmeventd.o
-	$(CC) -o $@ dmeventd.o $(CFLAGS) $(LDFLAGS) \
-	-L. -ldevmapper-event $(LIBS) -rdynamic
+	$(CC) $(CFLAGS) $(LDFLAGS) -L. \
+	-o $@ dmeventd.o \
+	-ldevmapper-event $(LIBS) -rdynamic
 
 .PHONY: install_dynamic install_static install_include \
 	install_pkgconfig install_dmeventd
diff -Naru --exclude '*.rej' --exclude '*.orig' LVM2.2.02.51.orig/daemons/dmeventd/plugins/mirror/Makefile.in LVM2.2.02.51/daemons/dmeventd/plugins/mirror/Makefile.in
--- LVM2.2.02.51.orig/daemons/dmeventd/plugins/mirror/Makefile.in	2009-05-11 10:28:46.000000000 +0000
+++ LVM2.2.02.51/daemons/dmeventd/plugins/mirror/Makefile.in	2009-08-27 00:06:20.642231272 +0000
@@ -17,7 +17,8 @@
 VPATH = @srcdir@
 
 INCLUDES += -I${top_srcdir}/tools
-CLDFLAGS += -L${top_srcdir}/tools -ldevmapper @LVM2CMD_LIB@
+CLDFLAGS += -L${top_srcdir}/tools
+LIBS += -ldevmapper -lpthread @LVM2CMD_LIB@
 
 SOURCES = dmeventd_mirror.c
 
diff -Naru --exclude '*.rej' --exclude '*.orig' LVM2.2.02.51.orig/daemons/dmeventd/plugins/snapshot/Makefile.in LVM2.2.02.51/daemons/dmeventd/plugins/snapshot/Makefile.in
--- LVM2.2.02.51.orig/daemons/dmeventd/plugins/snapshot/Makefile.in	2009-05-11 10:28:46.000000000 +0000
+++ LVM2.2.02.51/daemons/dmeventd/plugins/snapshot/Makefile.in	2009-08-27 00:06:20.642231272 +0000
@@ -17,7 +17,8 @@
 VPATH = @srcdir@
 
 INCLUDES += -I${top_srcdir}/tools
-CLDFLAGS += -L${top_srcdir}/tools -ldevmapper @LVM2CMD_LIB@
+CLDFLAGS += -L${top_srcdir}/tools
+LIBS += -lpthread -ldevmapper @LVM2CMD_LIB@
 
 SOURCES = dmeventd_snapshot.c
 
diff -Naru --exclude '*.rej' --exclude '*.orig' LVM2.2.02.51.orig/lib/Makefile.in LVM2.2.02.51/lib/Makefile.in
--- LVM2.2.02.51.orig/lib/Makefile.in	2009-06-03 11:31:06.000000000 +0000
+++ LVM2.2.02.51/lib/Makefile.in	2009-08-27 00:06:20.642231272 +0000
@@ -137,7 +137,8 @@
 endif
 
 ifeq ("@DMEVENTD@", "yes")
-  CLDFLAGS += -ldevmapper-event
+  CLDFLAGS += -L../daemons/dmeventd
+  LIBS += -ldevmapper-event
 endif
 
 LIB_NAME = liblvm-internal
diff -Naru --exclude '*.rej' --exclude '*.orig' LVM2.2.02.51.orig/make.tmpl.in LVM2.2.02.51/make.tmpl.in
--- LVM2.2.02.51.orig/make.tmpl.in	2009-07-31 11:49:53.000000000 +0000
+++ LVM2.2.02.51/make.tmpl.in	2009-08-27 00:06:20.645583990 +0000
@@ -28,7 +28,7 @@
 LN_S = @LN_S@
 SED = @SED@
 
-LIBS = @LIBS@
+LIBS += @LIBS@ $(LVMLIBS) $(LMLIBS)
 DEFS += @DEFS@
 CFLAGS += @CFLAGS@
 CLDFLAGS += @CLDFLAGS@
@@ -208,19 +208,19 @@
 ifeq ("@LIB_SUFFIX@","so")
 $(LIB_SHARED): $(OBJECTS) $(LDDEPS)
 	$(CC) -shared -Wl,-soname,$(notdir $@).$(LIB_VERSION) \
-	$(CFLAGS) $(CLDFLAGS) $(OBJECTS) $(LIBS) -o $@
+	$(CFLAGS) $(CLDFLAGS) $(LDFLAGS) $(OBJECTS) $(LIBS) -o $@
 endif
 
 ifeq ("@LIB_SUFFIX@","dylib")
 $(LIB_SHARED): $(OBJECTS) $(LDDEPS)
 	$(CC) -dynamiclib -dylib_current_version,$(LIB_VERSION) \
-	$(CFLAGS) $(CLDFLAGS) $(OBJECTS) $(LIBS) -o $@
+	$(CFLAGS) $(CLDFLAGS) $(LDFLAGS) $(OBJECTS) $(LIBS) -o $@
 endif
 
 %.so: %.a
 	$(CC) -shared -Wl,-soname,$(notdir $@).$(LIB_VERSION) \
-	$(CFLAGS) $(CLDFLAGS) $(LIBS) -o $@ \
-	@CLDWHOLEARCHIVE@ $< @CLDNOWHOLEARCHIVE@
+	$(CFLAGS) $(CLDFLAGS) $(LDFLAGS) -o $@ \
+	@CLDWHOLEARCHIVE@ $< @CLDNOWHOLEARCHIVE@ $(LIBS)
 
 $(LIB_STATIC): $(OBJECTS)
 	$(RM) $@
diff -Naru --exclude '*.rej' --exclude '*.orig' LVM2.2.02.51.orig/test/api/Makefile.in LVM2.2.02.51/test/api/Makefile.in
--- LVM2.2.02.51.orig/test/api/Makefile.in	2009-07-21 13:51:05.000000000 +0000
+++ LVM2.2.02.51/test/api/Makefile.in	2009-08-27 00:07:52.285533964 +0000
@@ -38,7 +38,7 @@
 OBJECTS = $(test_OBJECTS) $(vgtest_OBJECTS)
 
 test: $(test_OBJECTS) $(DEPLIBS)
-	$(CC) -o test $(test_OBJECTS) $(CFLAGS) $(LDFLAGS) $(LVMLIBS) $(LIBS)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o test $(test_OBJECTS) $(LVMLIBS) $(LIBS)
 
 vgtest: $(vgtest_OBJECTS) $(DEPLIBS)
-	$(CC) -o vgtest $(vgtest_OBJECTS) $(CFLAGS) $(LDFLAGS) $(LVMLIBS) $(LIBS)
+	$(CC) $(CFLAGS) $(LDFLAGS) -o vgtest $(vgtest_OBJECTS) $(LVMLIBS) $(LIBS)
diff -Naru --exclude '*.rej' --exclude '*.orig' LVM2.2.02.51.orig/tools/Makefile.in LVM2.2.02.51/tools/Makefile.in
--- LVM2.2.02.51.orig/tools/Makefile.in	2009-05-21 11:11:29.000000000 +0000
+++ LVM2.2.02.51/tools/Makefile.in	2009-08-27 00:06:20.645583990 +0000
@@ -106,24 +106,29 @@
 device-mapper: $(TARGETS_DM)
 
 dmsetup: dmsetup.o $(top_srcdir)/libdm/libdevmapper.$(LIB_SUFFIX)
-	$(CC) -o $@ dmsetup.o $(CFLAGS) $(LDFLAGS) \
-	      -L$(top_srcdir)/libdm -ldevmapper $(LIBS)
+	$(CC) $(CFLAGS) $(LDFLAGS) \
+	      -L$(top_srcdir)/libdm \
+		  -o $@ dmsetup.o \
+		  -ldevmapper $(LIB_PTHREAD)
 
 dmsetup.static: dmsetup.o $(interfacedir)/libdevmapper.a
-	$(CC) -o $@ dmsetup.o $(CFLAGS) $(LDFLAGS) -static \
-	      -L$(interfacedir) -ldevmapper $(LIBS) \
-	      $(LIB_PTHREAD)
+	$(CC) $(CFLAGS) $(LDFLAGS) -static \
+	      -L$(interfacedir) \
+		  -o $@ dmsetup.o \
+		  -ldevmapper $(LIB_PTHREAD)
 
 all: device-mapper
 
 lvm: $(OBJECTS) lvm.o $(top_srcdir)/lib/liblvm-internal.a
-	$(CC) -o $@ $(CFLAGS) $(OBJECTS) lvm.o \
-		$(LDFLAGS) $(LVMLIBS) $(LIBS) -rdynamic
+	$(CC) $(CFLAGS) $(LDFLAGS) \
+		-o $@ $(OBJECTS) lvm.o \
+		$(LVMLIBS) $(LIBS) -rdynamic
 
 LIB_PTHREAD = @LIB_PTHREAD@
 lvm.static: $(OBJECTS) lvm-static.o $(top_srcdir)/lib/liblvm-internal.a  $(interfacedir)/libdevmapper.a
-	$(CC) -o $@ $(CFLAGS) $(OBJECTS) lvm-static.o -static \
-		-L$(interfacedir) $(LDFLAGS) $(LVMLIBS) $(LIBS) $(LIB_PTHREAD) -rdynamic
+	$(CC) $(CFLAGS) $(LDFLAGS) -static -L$(interfacedir) \
+		-o $@ $(OBJECTS) lvm-static.o \
+		$(LVMLIBS) $(LIBS) $(LIB_PTHREAD) -rdynamic
 
 liblvm2cmd.a: $(top_srcdir)/lib/liblvm-internal.a $(OBJECTS) lvmcmdlib.o lvm2cmd.o
 	cat $(top_srcdir)/lib/liblvm-internal.a > $@



1.1                  sys-fs/lvm2/files/lvm.conf-2.02.51.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/lvm2/files/lvm.conf-2.02.51.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/lvm2/files/lvm.conf-2.02.51.patch?rev=1.1&content-type=text/plain

Index: lvm.conf-2.02.51.patch
===================================================================
--- doc/example.conf.orig	2009-02-22 14:00:26.000000000 -0500
+++ doc/example.conf	2009-03-22 04:10:05.629026882 -0400
@@ -50,7 +50,9 @@
 
 
     # By default we accept every block device:
-    filter = [ "a/.*/" ]
+    # Gentoo: we exclude /dev/nbd by default, because it makes a lot of kernel
+    # noise when you probed while not available.
+    filter = [ "r|/dev/nbd.*|", "a/.*/" ]
 
     # Exclude the cdrom drive
     # filter = [ "r|/dev/cdrom|" ]
@@ -230,12 +232,14 @@
     # e.g. vgscan.lvm1 and they will stop working after you start using
     # the new lvm2 on-disk metadata format.
     # The default value is set when the tools are built.
-    # fallback_to_lvm1 = 0
+    # Gentoo: the LVM tools are a seperate package.
+    fallback_to_lvm1 = 0
 
     # The default metadata format that commands should use - "lvm1" or "lvm2".
     # The command line override is -M1 or -M2.
     # Defaults to "lvm1" if compiled in, else "lvm2".
-    # format = "lvm1"
+    # Gentoo: default to LVM2 format
+    format = "lvm2"
 
     # Location of proc filesystem
     proc = "/proc"
@@ -364,12 +368,12 @@
 
 # Metadata settings
 #
-# metadata {
+metadata {
     # Default number of copies of metadata to hold on each PV.  0, 1 or 2.
     # You might want to override it from the command line with 0 
     # when running pvcreate on new PVs which are to be added to large VGs.
-
-    # pvmetadatacopies = 1
+    # Gentoo: enable for data safety, but PV resize is then disabled.
+    #pvmetadatacopies = 2
 
     # Approximate default size of on-disk metadata areas in sectors.
     # You should increase this if you have large volume groups or
@@ -391,11 +395,11 @@
     # the supplied toolset to make changes (e.g. vgcfgrestore).
 
     # dirs = [ "/etc/lvm/metadata", "/mnt/disk2/lvm/metadata2" ]
-#}
+}
 
 # Event daemon
-#
-# dmeventd {
+# Gentoo: uncommented, since we provide the dmeventd init script
+dmeventd {
     # mirror_library is the library used when monitoring a mirror device.
     #
     # "libdevmapper-event-lvm2mirror.so" attempts to recover from
@@ -403,7 +407,7 @@
     # reconfigures a mirror as necessary. If no mirror library is
     # provided, mirrors are not monitored through dmeventd.
 
-    # mirror_library = "libdevmapper-event-lvm2mirror.so"
+    mirror_library = "libdevmapper-event-lvm2mirror.so"
 
     # snapshot_library is the library used when monitoring a snapshot device.
     #
@@ -412,6 +416,6 @@
     # snapshot exceedes 80%. The warning is repeated when 85%, 90% and
     # 95% of the snapshot are filled.
 
-    # snapshot_library = "libdevmapper-event-lvm2snapshot.so"
-#}
+    snapshot_library = "libdevmapper-event-lvm2snapshot.so"
+}
 



1.1                  sys-fs/lvm2/files/lvm2-2.02.51-device-mapper-export-format.patch

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/lvm2/files/lvm2-2.02.51-device-mapper-export-format.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/sys-fs/lvm2/files/lvm2-2.02.51-device-mapper-export-format.patch?rev=1.1&content-type=text/plain

Index: lvm2-2.02.51-device-mapper-export-format.patch
===================================================================
Add support for exporting the device-mapper table to userspace.

Original patch written by Matthias Schwarzott <zzam@gentoo.org>, in response to
Gentoo bug #189404.

This makes it possible to have udev rules based on the properties of the
device-mapper node, such as target types, suspended status etc.

Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Ported-from: lvm2-2.02.48-device-mapper-export-format.patch

diff -Naru --exclude '*.rej' --exclude '*.orig' LVM2.2.02.51.orig/libdm/libdevmapper.h LVM2.2.02.51/libdm/libdevmapper.h
--- LVM2.2.02.51.orig/libdm/libdevmapper.h	2009-08-06 15:04:30.000000000 +0000
+++ LVM2.2.02.51/libdm/libdevmapper.h	2009-08-26 23:59:20.109335044 +0000
@@ -972,6 +972,7 @@
 #define DM_REPORT_OUTPUT_FIELD_NAME_PREFIX	0x00000008
 #define DM_REPORT_OUTPUT_FIELD_UNQUOTED		0x00000010
 #define DM_REPORT_OUTPUT_COLUMNS_AS_ROWS	0x00000020
+#define DM_REPORT_OUTPUT_EXPORT				0x00000040
 
 struct dm_report *dm_report_init(uint32_t *report_types,
 				 const struct dm_report_object_type *types,
diff -Naru --exclude '*.rej' --exclude '*.orig' LVM2.2.02.51.orig/libdm/libdm-report.c LVM2.2.02.51/libdm/libdm-report.c
--- LVM2.2.02.51.orig/libdm/libdm-report.c	2009-02-09 09:45:49.000000000 +0000
+++ LVM2.2.02.51/libdm/libdm-report.c	2009-08-26 23:59:20.112668654 +0000
@@ -891,6 +891,8 @@
 	uint32_t align;
 	const char *repstr;
 	char buf[4096];
+	const char *fname;
+	char tmp_char;
 
 	if (rh->flags & DM_REPORT_OUTPUT_FIELD_NAME_PREFIX) {
 		if (!(field_id = strdup(rh->fields[field->props->field_num].id))) {
@@ -921,6 +923,25 @@
 			return 0;
 		}
 	}
+	if (rh->flags & DM_REPORT_OUTPUT_EXPORT) {
+		fname = rh->fields[field->props->field_num].id;
+		if (!dm_pool_grow_object(rh->mem, "DM_", strlen("DM_"))) {
+			log_error("dm_report: Unable to extend output line");
+			return 0;
+		}
+		while (fname && fname[0]) {
+			tmp_char = toupper(fname[0]);
+			if (!dm_pool_grow_object(rh->mem, &tmp_char, 1)) {
+				log_error("dm_report: Unable to extend output line");
+				return 0;
+			}
+			fname++;
+		}
+		if (!dm_pool_grow_object(rh->mem, "=", strlen("="))) {
+			log_error("dm_report: Unable to extend output line");
+			return 0;
+		}
+	}
 
 	repstr = field->report_string;
 	width = field->props->width;
diff -Naru --exclude '*.rej' --exclude '*.orig' LVM2.2.02.51.orig/tools/dmsetup.c LVM2.2.02.51/tools/dmsetup.c
--- LVM2.2.02.51.orig/tools/dmsetup.c	2009-08-06 15:56:50.000000000 +0000
+++ LVM2.2.02.51/tools/dmsetup.c	2009-08-27 00:01:10.332242296 +0000
@@ -114,6 +114,7 @@
 enum {
 	READ_ONLY = 0,
 	COLS_ARG,
+	EXPORT_ARG,
 	EXEC_ARG,
 	FORCE_ARG,
 	GID_ARG,
@@ -150,7 +151,8 @@
 	DR_INFO = 2,
 	DR_DEPS = 4,
 	DR_TREE = 8,	/* Complete dependency tree required */
-	DR_NAME = 16
+	DR_NAME = 16,
+	DR_TABLE = 0x20, /* table is required, not just info */
 } report_type_t;
 
 static int _switches[NUM_SWITCHES];
@@ -1383,8 +1385,13 @@
 			name = argv[1];
 	}
 
-	if (!(dmt = dm_task_create(DM_DEVICE_INFO)))
-		return 0;
+	if (_report_type & DR_TABLE ) {
+		if (!(dmt = dm_task_create(DM_DEVICE_TABLE)))
+			return 0;
+	} else {
+		if (!(dmt = dm_task_create(DM_DEVICE_INFO)))
+			return 0;
+	}
 
 	if (!_set_task_device(dmt, name, 0))
 		goto out;
@@ -1848,6 +1855,16 @@
 	return dm_report_field_uint32(rh, field, &value);
 }
 
+static int _int_disp(struct dm_report *rh,
+		      struct dm_pool *mem __attribute((unused)),
+		      struct dm_report_field *field, const void *data,
+		      void *private __attribute((unused)))
+{
+	const int value = *(const int *)data;
+
+	return dm_report_field_int(rh, field, &value);
+}
+
 static int _dm_name_disp(struct dm_report *rh,
 			 struct dm_pool *mem __attribute((unused)),
 			 struct dm_report_field *field, const void *data,
@@ -1959,6 +1976,66 @@
 }
 
 
+static int _dm_info_cleartext_status_disp(struct dm_report *rh,
+					 struct dm_pool *mem __attribute((unused)),
+					 struct dm_report_field *field, const void *data,
+					 void *private __attribute((unused)))
+{
+	const char *buf = "NOTPRESENT";
+	const struct dm_info *info = data;
+
+	if (info->exists) {
+		if (info->suspended)
+			buf = "SUSPENDED";
+		else
+			buf = info->read_only ? " READONLY" : "ACTIVE";
+	}
+		
+	return dm_report_field_string(rh, field, &buf);
+}
+
+static int _dm_info_target_types_disp(struct dm_report *rh,
+					 struct dm_pool *mem __attribute((unused)),
+					 struct dm_report_field *field, const void *data,
+					 void *private __attribute((unused)))
+{
+	char buf[1024];
+	char *dest = buf;
+	int remains = sizeof(buf);
+	int written;
+	const char *s = buf;
+	struct dm_task *dmt = (struct dm_task *) data;
+	void *next = NULL;
+	uint64_t start, length;
+	char *target_type = NULL;
+	char *params;
+
+
+	buf[0] = '\0';
+	
+	next = dm_get_next_target(dmt, next, &start, &length,
+				  &target_type, &params);
+	if (target_type) {
+		written = snprintf(dest, remains, "%s", target_type);
+		dest += written;
+		remains -= written;
+
+		while (remains > 0 && next) {
+			next = dm_get_next_target(dmt, next, &start, &length,
+						  &target_type, &params);
+			if (target_type) {
+				written = snprintf(dest, remains, ",%s", target_type);
+				dest += written;
+				remains -= written;
+			}
+		}
+	}
+
+	buf[sizeof(buf)-1] = '\0';
+	
+	return dm_report_field_string(rh, field, &s);
+}
+
 static int _dm_info_devno_disp(struct dm_report *rh, struct dm_pool *mem,
 			       struct dm_report_field *field, const void *data,
 			       void *private)
@@ -2223,6 +2300,7 @@
 	{ DR_DEPS, "Mapped Device Relationship Information", "", _deps_get_obj },
 	{ DR_TREE, "Mapped Device Relationship Information", "", _tree_get_obj },
 	{ DR_NAME, "Mapped Device Name Components", "", _split_name_get_obj },
+	{ DR_TABLE, "Mapped Device Table", "", _task_get_obj },
 	{ 0, "", "", NULL },
 };
 
@@ -2242,6 +2320,7 @@
 FIELD_F(TASK, NUM, "RAhead", 6, dm_read_ahead, "read_ahead", "Read ahead in sectors.")
 
 FIELD_F(INFO, STR, "Stat", 4, dm_info_status, "attr", "(L)ive, (I)nactive, (s)uspended, (r)ead-only, read-(w)rite.")
+FIELD_F(INFO, STR, "State", 1, dm_info_cleartext_status, "status", "State as cleartext.")
 FIELD_F(INFO, STR, "Tables", 6, dm_info_table_loaded, "tables_loaded", "Which of the live and inactive table slots are filled.")
 FIELD_F(INFO, STR, "Suspended", 9, dm_info_suspended, "suspended", "Whether the device is suspended.")
 FIELD_F(INFO, STR, "Read-only", 9, dm_info_read_only, "readonly", "Whether the device is read-only or writeable.")
@@ -2252,6 +2331,11 @@
 FIELD_O(INFO, dm_info, NUM, "Targ", target_count, 4, int32, "segments", "Number of segments in live table, if present.")
 FIELD_O(INFO, dm_info, NUM, "Event", event_nr, 6, uint32, "events", "Number of most recent event.")
 
+FIELD_O(INFO, dm_info, NUM, "RO", read_only, 2, int, "read_only", "Read only.")
+FIELD_O(INFO, dm_info, NUM, "Ex", exists, 2, int, "exists", "Exists.")
+FIELD_O(INFO, dm_info, NUM, "Susp", suspended, 4, int, "suspended", "Suspended.")
+FIELD_O(INFO, dm_info, NUM, "tab_live", live_table, 8, int, "table_live", "Live table.")
+FIELD_O(INFO, dm_info, NUM, "tab_inact", inactive_table, 9, int, "table_inactive", "Inactive table.")
 FIELD_O(DEPS, dm_deps, NUM, "#Devs", count, 5, int32, "device_count", "Number of devices used by this one.")
 FIELD_F(TREE, STR, "DevNames", 8, dm_deps_names, "devs_used", "List of names of mapped devices used by this one.")
 FIELD_F(DEPS, STR, "DevNos", 6, dm_deps, "devnos_used", "List of device numbers of devices used by this one.")
@@ -2259,6 +2343,7 @@
 FIELD_F(TREE, NUM, "#Refs", 5, dm_tree_parents_count, "device_ref_count", "Number of mapped devices referencing this one.")
 FIELD_F(TREE, STR, "RefNames", 8, dm_tree_parents_names, "names_using_dev", "List of names of mapped devices using this one.")
 FIELD_F(TREE, STR, "RefDevNos", 9, dm_tree_parents_devs, "devnos_using_dev", "List of device numbers of mapped devices using this one.")
+FIELD_F(TABLE, STR, "Targettypes", 32, dm_info_target_types, "target_types", "Used target types.")
 
 FIELD_O(NAME, dm_split_name, STR, "Subsys", subsystem, 6, dm_subsystem, "subsystem", "Userspace subsystem responsible for this device.")
 FIELD_O(NAME, dm_split_name, STR, "VG", vg_name, 4, dm_vg_name, "vg_name", "LVM Volume Group name.")
@@ -2275,14 +2360,16 @@
 #undef FIELD_F
 
 static const char *default_report_options = "name,major,minor,attr,open,segments,events,uuid";
+static const char *default_export_options = "name,major,minor,status,read_only,exists,suspended,table_live,table_inactive,open,segments,events,uuid,target_types";
 static const char *splitname_report_options = "vg_name,lv_name,lv_layer";
 
 static int _report_init(struct command *c)
 {
-	char *options = (char *) default_report_options;
+	char *default_options = (char *) default_report_options;
+	char *options;
 	const char *keys = "";
 	const char *separator = " ";
-	int aligned = 1, headings = 1, buffered = 1, field_prefixes = 0;
+	int aligned = 1, headings = 1, buffered = 1, field_prefixes = 0, export = 0;
 	int quoted = 1, columns_as_rows = 0;
 	uint32_t flags = 0;
 	size_t len = 0;
@@ -2312,6 +2399,15 @@
 		field_prefixes = 1;
 	}
 
+	if (_switches[EXPORT_ARG]) {
+		default_options = (char *) default_export_options;
+		separator = "\n";
+		aligned = 0;
+		headings = 0;
+		export = 1;
+	}
+
+	options = default_options;
 	if (_switches[OPTIONS_ARG] && _string_args[OPTIONS_ARG]) {
 		if (*_string_args[OPTIONS_ARG] != '+')
 			options = _string_args[OPTIONS_ARG];
@@ -2363,6 +2459,9 @@
 	if (columns_as_rows)
 		flags |= DM_REPORT_OUTPUT_COLUMNS_AS_ROWS;
 
+	if (export)
+		flags |= DM_REPORT_OUTPUT_EXPORT;
+
 	if (!(_report = dm_report_init(&_report_type,
 				       _report_types, _report_fields,
 				       options, separator, flags, keys, NULL)))
@@ -2446,7 +2545,9 @@
 		"        [-r|--readonly] [--noopencount] [--nolockfs]\n"
 		"        [--noudevsync] [--readahead [+]<sectors>|auto|none]\n"
 		"        [-c|-C|--columns] [-o <fields>] [-O|--sort <sort_fields>]\n"
-		"        [--nameprefixes] [--noheadings] [--separator <separator>]\n\n");
+		"        [--nameprefixes] [--noheadings] [--separator <separator>]\n"
+		"        [-e|--export]\n"
+		"\n");
 	for (i = 0; _commands[i].name; i++)
 		fprintf(out, "\t%s %s\n", _commands[i].name, _commands[i].help);
 	fprintf(out, "\n<device> may be device name or -u <uuid> or "
@@ -2701,7 +2802,7 @@
 			show_all++;
 		if (c == 'd')
 			delete++;
-		if (c == 'e')
+		if (c == 'E')
 			encrypt_loop++;
 		if (c == 'f')
 			find++;
@@ -2796,6 +2897,7 @@
 	static struct option long_options[] = {
 		{"readonly", 0, &ind, READ_ONLY},
 		{"columns", 0, &ind, COLS_ARG},
+		{"export", 0, &ind, EXPORT_ARG},
 		{"exec", 1, &ind, EXEC_ARG},
 		{"force", 0, &ind, FORCE_ARG},
 		{"gid", 1, &ind, GID_ARG},
@@ -2879,12 +2981,16 @@
 
 	optarg = 0;
 	optind = OPTIND_INIT;
-	while ((ind = -1, c = GETOPTLONG_FN(*argc, *argv, "cCfG:j:m:M:no:O:ru:U:v",
+	while ((ind = -1, c = GETOPTLONG_FN(*argc, *argv, "cCefG:j:m:M:no:O:ru:U:v",
 					    long_options, NULL)) != -1) {
 		if (c == ':' || c == '?')
 			return 0;
 		if (c == 'c' || c == 'C' || ind == COLS_ARG)
 			_switches[COLS_ARG]++;
+		if (c == 'e' || ind == EXPORT_ARG) {
+			_switches[EXPORT_ARG]++;
+			_switches[COLS_ARG]++;
+		}
 		if (c == 'f' || ind == FORCE_ARG)
 			_switches[FORCE_ARG]++;
 		if (c == 'r' || ind == READ_ONLY)






^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-08-26 20:32 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-27  0:34 [gentoo-commits] gentoo-x86 commit in sys-fs/lvm2/files: lvm2-2.02.51-as-needed.patch lvm.conf-2.02.51.patch lvm2-2.02.51-device-mapper-export-format.patch Robin H. Johnson (robbat2)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox