[lvm-devel] LVM2 ./WHATS_NEW lib/metadata/lv.c lib/metadat ...

agk at sourceware.org agk at sourceware.org
Thu Sep 8 20:55:40 UTC 2011


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk at sourceware.org	2011-09-08 20:55:39

Modified files:
	.              : WHATS_NEW 
	lib/metadata   : lv.c metadata-exported.h 
	man            : lvs.8.in 

Log message:
	Add 7th lv_attr char to show the related kernel target.
	Add thin volume types to lv_attr.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.2100&r2=1.2101
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/lv.c.diff?cvsroot=lvm2&r1=1.24&r2=1.25
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata-exported.h.diff?cvsroot=lvm2&r1=1.209&r2=1.210
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/man/lvs.8.in.diff?cvsroot=lvm2&r1=1.13&r2=1.14

--- LVM2/WHATS_NEW	2011/09/07 13:42:00	1.2100
+++ LVM2/WHATS_NEW	2011/09/08 20:55:39	1.2101
@@ -1,5 +1,6 @@
 Version 2.02.89 - 
 ==================================
+  Add 7th lv_attr char to show the related kernel target.
   Terminate pv_attr field correctly. (2.02.86)
   Fix 'not not' typo in pvcreate man page.
   Improve man page style for fsadm, lvreduce, lvremove, lvrename, lvresize.
--- LVM2/lib/metadata/lv.c	2011/04/12 12:24:29	1.24
+++ LVM2/lib/metadata/lv.c	2011/09/08 20:55:39	1.25
@@ -298,7 +298,7 @@
 	struct lvinfo info;
 	char *repstr;
 
-	if (!(repstr = dm_pool_zalloc(mem, 7))) {
+	if (!(repstr = dm_pool_zalloc(mem, 8))) {
 		log_error("dm_pool_alloc failed");
 		return 0;
 	}
@@ -311,15 +311,22 @@
 		repstr[0] = 'p';
 	else if (lv->status & CONVERTING)
 		repstr[0] = 'c';
-	else if (lv->status & VIRTUAL)
-		repstr[0] = 'v';
-	/* Origin takes precedence over Mirror */
-	else if (lv_is_origin(lv)) {
+	/* Origin takes precedence over mirror and thin volume */
+	else if (lv_is_origin(lv))
 		repstr[0] = (lv_is_merging_origin(lv)) ? 'O' : 'o';
-	}
-	else if (lv->status & MIRRORED) {
+	else if (lv->status & MIRRORED)
 		repstr[0] = (lv->status & LV_NOTSYNCED) ? 'M' : 'm';
-	}else if (lv->status & MIRROR_IMAGE)
+	else if (lv_is_thin_volume(lv))
+		repstr[0] = 'V';
+	else if (lv->status & VIRTUAL)
+		repstr[0] = 'v';
+	else if (lv_is_thin_pool(lv))
+		repstr[0] = 't';
+	else if (lv_is_thin_pool_data(lv))
+		repstr[0] = 'T';
+	else if (lv_is_thin_pool_metadata(lv) || (lv->status & RAID_META))
+		repstr[0] = 'e';
+	else if (lv->status & MIRROR_IMAGE)
 		repstr[0] = (_lv_mimage_in_sync(lv)) ? 'i' : 'I';
 	else if (lv->status & MIRROR_LOG)
 		repstr[0] = 'l';
@@ -370,6 +377,22 @@
 		repstr[4] = '-';
 		repstr[5] = '-';
 	}
+
+	if (lv_is_thin_type(lv))
+		repstr[6] = 't';
+	else if (lv_is_mirror_type(lv))
+		repstr[6] = 'm';
+	else if (lv_is_raid_type(lv))
+		repstr[6] = 'r';
+	else if (lv_is_cow(lv) || lv_is_origin(lv))
+		repstr[6] = 's';
+	else if (lv_has_unknown_segments(lv))
+		repstr[6] = 'u';
+	else if (lv_is_virtual(lv))
+		repstr[6] = 'v';
+	else
+		repstr[6] = '-';
+
 out:
 	return repstr;
 }
--- LVM2/lib/metadata/metadata-exported.h	2011/09/08 16:41:18	1.209
+++ LVM2/lib/metadata/metadata-exported.h	2011/09/08 20:55:39	1.210
@@ -141,6 +141,12 @@
 #define lv_is_mirrored(lv)	((lv)->status & MIRRORED ? 1 : 0)
 #define lv_is_rlog(lv)		((lv)->status & REPLICATOR_LOG ? 1 : 0)
 
+#define lv_is_thin_type(lv)	((lv)->status & (THIN_POOL | THIN_VOLUME | THIN_POOL_DATA | THIN_POOL_METADATA) ? 1 : 0)
+#define lv_is_mirror_type(lv)	((lv)->status & (MIRROR_LOG | MIRROR_IMAGE | MIRRORED | PVMOVE) ? 1 : 0)
+#define lv_is_raid_type(lv)	((lv)->status & (RAID | RAID_IMAGE | RAID_META))
+
+#define lv_is_virtual(lv)	((lv)->status & VIRTUAL)
+
 /* Ordered list - see lv_manip.c */
 typedef enum {
 	AREA_UNASSIGNED,
--- LVM2/man/lvs.8.in	2010/06/23 12:32:08	1.13
+++ LVM2/man/lvs.8.in	2011/09/08 20:55:39	1.14
@@ -70,7 +70,9 @@
 .IP 1 3
 Volume type: (m)irrored, (M)irrored without initial sync, (o)rigin,
 (O)rigin with merging snapshot, (s)napshot, merging (S)napshot, (p)vmove,
-(v)irtual, mirror (i)mage, mirror (I)mage out-of-sync, under (c)onversion
+(v)irtual, mirror (i)mage, mirror (I)mage out-of-sync, mirror (l)og device,
+under (c)onversion, thin (V)olume, (t)hin pool, (T)hin pool data, thin pool 
+m(e)tadata
 .IP 2 3
 Permissions: (w)riteable, (r)ead-only
 .IP 3 3
@@ -84,6 +86,14 @@
 mapped (d)evice present without tables, mapped device present with (i)nactive table
 .IP 6 3
 device (o)pen
+.IP 7 3
+Target type: (m)irror, (r)aid, (s)napshot, (t)hin, (u)nknown, (v)irtual.  
+This groups logical volumes related to the same kernel target together.  So,
+for example, mirror images, mirror logs as well as mirrors themselves appear as
+(m) if they use the original device-mapper mirror kernel driver; whereas the raid
+equivalents using the md raid kernel driver all appear as (r).
+Snapshots using the original device-mapper driver appear as (s); whereas
+snapshots of thin volumes using the new thin provisioning driver appear as (t).
 .RE
 .TP
 .I \-\-segments




More information about the lvm-devel mailing list