public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
From: agk@sourceware.org
To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org
Subject: LVM2 ./WHATS_NEW_DM libdm/libdevmapper.h libdm ...
Date: Fri, 15 Oct 2010 01:10:00 -0000	[thread overview]
Message-ID: <20101015011031.20036.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2010-10-15 01:10:29

Modified files:
	.              : WHATS_NEW_DM 
	libdm          : libdevmapper.h libdm-common.c 
	libdm/ioctl    : libdm-iface.c libdm-targets.h 
	libdm/misc     : dm-ioctl.h 
	man            : dmsetup.8.in 
	tools          : dmsetup.c 

Log message:
	Add --setuuid to dmsetup rename.
	Add dm_task_set_newuuid to set uuid of mapped device post-creation. (pjones)

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.416&r2=1.417
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/libdevmapper.h.diff?cvsroot=lvm2&r1=1.126&r2=1.127
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/libdm-common.c.diff?cvsroot=lvm2&r1=1.100&r2=1.101
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/ioctl/libdm-iface.c.diff?cvsroot=lvm2&r1=1.81&r2=1.82
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/ioctl/libdm-targets.h.diff?cvsroot=lvm2&r1=1.26&r2=1.27
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/libdm/misc/dm-ioctl.h.diff?cvsroot=lvm2&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/man/dmsetup.8.in.diff?cvsroot=lvm2&r1=1.35&r2=1.36
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/dmsetup.c.diff?cvsroot=lvm2&r1=1.145&r2=1.146

--- LVM2/WHATS_NEW_DM	2010/09/27 19:09:34	1.416
+++ LVM2/WHATS_NEW_DM	2010/10/15 01:10:27	1.417
@@ -1,5 +1,7 @@
 Version 1.02.56 - 
 =====================================
+  Add --setuuid to dmsetup rename.
+  Add dm_task_set_newuuid to set uuid of mapped device post-creation.
 
 Version 1.02.55 - 24th September 2010
 =====================================
--- LVM2/libdm/libdevmapper.h	2010/09/30 21:06:52	1.126
+++ LVM2/libdm/libdevmapper.h	2010/10/15 01:10:28	1.127
@@ -167,6 +167,7 @@
 
 int dm_task_set_ro(struct dm_task *dmt);
 int dm_task_set_newname(struct dm_task *dmt, const char *newname);
+int dm_task_set_newuuid(struct dm_task *dmt, const char *newuuid);
 int dm_task_set_minor(struct dm_task *dmt, int minor);
 int dm_task_set_major(struct dm_task *dmt, int major);
 int dm_task_set_major_minor(struct dm_task *dmt, int major, int minor, int allow_default_major_fallback);
--- LVM2/libdm/libdm-common.c	2010/09/30 21:06:52	1.100
+++ LVM2/libdm/libdm-common.c	2010/10/15 01:10:28	1.101
@@ -192,6 +192,7 @@
 	dmt->event_nr = 0;
 	dmt->cookie_set = 0;
 	dmt->query_inactive_table = 0;
+	dmt->new_uuid = 0;
 
 	return dmt;
 }
--- LVM2/libdm/ioctl/libdm-iface.c	2010/08/18 13:11:57	1.81
+++ LVM2/libdm/ioctl/libdm-iface.c	2010/10/15 01:10:28	1.82
@@ -826,6 +826,11 @@
 	if (dmt->type == DM_DEVICE_TABLE)
 		dmi->flags |= DM_STATUS_TABLE_FLAG;
 
+	if (dmt->new_uuid) {
+		log_error("Changing UUID is not supported by kernel.");
+		goto bad;
+	}
+
 	log_debug("dm %s %s %s%s%s [%u]", _cmd_data_v1[dmt->type].name,
 		  dmi->name, dmi->uuid, dmt->newname ? " " : "",
 		  dmt->newname ? dmt->newname : "",
@@ -1185,6 +1190,22 @@
 	return 1;
 }
 
+int dm_task_set_newuuid(struct dm_task *dmt, const char *newuuid)
+{
+	if (strlen(newuuid) >= DM_UUID_LEN) {
+		log_error("Uuid \"%s\" too long", newuuid);
+		return 0;
+	}
+
+	if (!(dmt->newname = dm_strdup(newuuid))) {
+		log_error("dm_task_set_newuuid: strdup(%s) failed", newuuid);
+		return 0;
+	}
+	dmt->new_uuid = 1;
+
+	return 1;
+}
+
 int dm_task_set_newname(struct dm_task *dmt, const char *newname)
 {
 	if (strchr(newname, '/')) {
@@ -1201,6 +1222,7 @@
 		log_error("dm_task_set_newname: strdup(%s) failed", newname);
 		return 0;
 	}
+	dmt->new_uuid = 0;
 
 	return 1;
 }
@@ -1399,7 +1421,7 @@
 	}
 
 	if (count && dmt->newname) {
-		log_error("targets and newname are incompatible");
+		log_error("targets and rename are incompatible");
 		return NULL;
 	}
 
@@ -1409,12 +1431,12 @@
 	}
 
 	if (dmt->newname && (dmt->sector || dmt->message)) {
-		log_error("message and newname are incompatible");
+		log_error("message and rename are incompatible");
 		return NULL;
 	}
 
 	if (dmt->newname && dmt->geometry) {
-		log_error("geometry and newname are incompatible");
+		log_error("geometry and rename are incompatible");
 		return NULL;
 	}
 
@@ -1514,6 +1536,14 @@
 				 "by kernel.  It will use live table.");
 		dmi->flags |= DM_QUERY_INACTIVE_TABLE_FLAG;
 	}
+	if (dmt->new_uuid) {
+		if (_dm_version_minor < 19) {
+			log_error("WARNING: Setting UUID unsupported by "
+				  "kernel.  Aborting operation.");
+			goto bad;
+		}
+		dmi->flags |= DM_NEW_UUID_FLAG;
+	}
 
 	dmi->target_count = count;
 	dmi->event_nr = dmt->event_nr;
@@ -1910,9 +1940,10 @@
 		}
 	}
 
-	log_debug("dm %s %s %s%s%s %s%.0d%s%.0d%s"
+	log_debug("dm %s %s%s %s%s%s %s%.0d%s%.0d%s"
 		  "%s%c%c%s%s %.0" PRIu64 " %s [%u]",
 		  _cmd_data_v4[dmt->type].name,
+		  dmt->new_uuid ? "UUID " : "",
 		  dmi->name, dmi->uuid, dmt->newname ? " " : "",
 		  dmt->newname ? dmt->newname : "",
 		  dmt->major > 0 ? "(" : "",
@@ -2044,7 +2075,7 @@
 
 	case DM_DEVICE_RENAME:
 		/* FIXME Kernel needs to fill in dmi->name */
-		if (dmt->dev_name && !udev_only)
+		if (!dmt->new_uuid && dmt->dev_name && !udev_only)
 			rename_dev_node(dmt->dev_name, dmt->newname,
 					check_udev);
 		break;
--- LVM2/libdm/ioctl/libdm-targets.h	2009/11/06 00:43:09	1.26
+++ LVM2/libdm/ioctl/libdm-targets.h	2010/10/15 01:10:28	1.27
@@ -62,6 +62,7 @@
 	int suppress_identical_reload;
 	uint64_t existing_table_size;
 	int cookie_set;
+	int new_uuid;
 
 	char *uuid;
 };
--- LVM2/libdm/misc/dm-ioctl.h	2010/06/01 16:08:14	1.5
+++ LVM2/libdm/misc/dm-ioctl.h	2010/10/15 01:10:28	1.6
@@ -46,7 +46,7 @@
  * Remove a device, destroy any tables.
  *
  * DM_DEV_RENAME:
- * Rename a device.
+ * Rename a device or set its uuid if none was previously supplied.
  *
  * DM_SUSPEND:
  * This performs both suspend and resume, depending which flag is
@@ -269,9 +269,9 @@
 #define DM_DEV_SET_GEOMETRY	_IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
 
 #define DM_VERSION_MAJOR	4
-#define DM_VERSION_MINOR	17
+#define DM_VERSION_MINOR	19
 #define DM_VERSION_PATCHLEVEL	0
-#define DM_VERSION_EXTRA	"-ioctl (2010-03-05)"
+#define DM_VERSION_EXTRA	"-ioctl (2010-10-14)"
 
 /* Status bits */
 #define DM_READONLY_FLAG	(1 << 0) /* In/Out */
@@ -324,4 +324,10 @@
  */
 #define DM_UEVENT_GENERATED_FLAG	(1 << 13) /* Out */
 
+/*
+ * If set, rename changes the uuid not the name.  Only permitted
+ * if no uuid was previously supplied: an existing uuid cannot be changed.
+ */
+#define DM_NEW_UUID_FLAG        (1 << 14) /* In */
+
 #endif				/* _LINUX_DM_IOCTL_H */
--- LVM2/man/dmsetup.8.in	2010/05/27 19:00:20	1.35
+++ LVM2/man/dmsetup.8.in	2010/10/15 01:10:28	1.36
@@ -33,6 +33,9 @@
 .B dmsetup rename
 .I device_name new_name
 .br
+.B dmsetup rename
+.I device_name --setuuid uuid
+.br
 .B dmsetup message
 .I device_name sector message
 .br
@@ -285,6 +288,11 @@
 .I device_name new_name
 .br
 Renames a device.
+.IP \fBrename
+.I device_name --setuuid uuid
+.br
+Sets the uuid of a device that was created without a uuid.
+After a uuid has been set it cannot be changed.
 .IP \fBresume
 .I device_name
 .br
--- LVM2/tools/dmsetup.c	2010/09/30 21:06:53	1.145
+++ LVM2/tools/dmsetup.c	2010/10/15 01:10:29	1.146
@@ -140,6 +140,7 @@
 	READAHEAD_ARG,
 	ROWS_ARG,
 	SEPARATOR_ARG,
+	SETUUID_ARG,
 	SHOWKEYS_ARG,
 	SORT_ARG,
 	TABLE_ARG,
@@ -665,7 +666,10 @@
 	if (!_set_task_device(dmt, (argc == 3) ? argv[1] : NULL, 0))
 		goto out;
 
-	if (!dm_task_set_newname(dmt, argv[argc - 1]))
+	if (_switches[SETUUID_ARG]) {
+		if  (!dm_task_set_newuuid(dmt, argv[argc - 1]))
+			goto out;
+	} else if (!dm_task_set_newname(dmt, argv[argc - 1]))
 		goto out;
 
 	if (_switches[NOOPENCOUNT_ARG] && !dm_task_no_open_count(dmt))
@@ -2699,7 +2703,7 @@
 	{"load", "<device> [<table_file>]", 0, 2, _load},
 	{"clear", "<device>", 0, 1, _clear},
 	{"reload", "<device> [<table_file>]", 0, 2, _load},
-	{"rename", "<device> <new_name>", 1, 2, _rename},
+	{"rename", "<device> [--setuuid] <new_name_or_uuid>", 1, 2, _rename},
 	{"message", "<device> <sector> <message>", 2, -1, _message},
 	{"ls", "[--target <target_type>] [--exec <command>] [--tree [-o options]]", 0, 0, _ls},
 	{"info", "[<device>]", 0, 1, _info},
@@ -3106,6 +3110,7 @@
 		{"readahead", 1, &ind, READAHEAD_ARG},
 		{"rows", 0, &ind, ROWS_ARG},
 		{"separator", 1, &ind, SEPARATOR_ARG},
+		{"setuuid", 0, &ind, SETUUID_ARG},
 		{"showkeys", 0, &ind, SHOWKEYS_ARG},
 		{"sort", 1, &ind, SORT_ARG},
 		{"table", 1, &ind, TABLE_ARG},
@@ -3278,6 +3283,8 @@
 		}
 		if ((ind == ROWS_ARG))
 			_switches[ROWS_ARG]++;
+		if ((ind == SETUUID_ARG))
+			_switches[SETUUID_ARG]++;
 		if ((ind == SHOWKEYS_ARG))
 			_switches[SHOWKEYS_ARG]++;
 		if ((ind == TABLE_ARG)) {


             reply	other threads:[~2010-10-15  1:10 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-15  1:10 agk [this message]
  -- strict thread matches above, loose matches on Subject: below --
2012-03-02 17:31 zkabelac
2012-02-23 22:45 zkabelac
2012-02-15 12:23 prajnoha
2012-02-15 11:39 prajnoha
2012-02-15 11:27 prajnoha
2012-01-11 12:34 prajnoha
2011-12-21 12:47 zkabelac
2011-09-29  8:53 zkabelac
2011-09-22 17:36 prajnoha
2011-09-22 17:23 prajnoha
2011-09-22 17:17 prajnoha
2011-09-22 17:09 prajnoha
2011-08-19 16:26 agk
2011-03-10 12:48 zkabelac
2011-02-18 14:38 zkabelac
2011-02-04 16:08 mbroz
2011-01-04 14:43 prajnoha
2010-10-25 13:13 zkabelac
2010-04-28 13:37 prajnoha
2009-11-13 12:43 prajnoha
2009-10-22 12:55 prajnoha
2009-06-03 11:40 agk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20101015011031.20036.qmail@sourceware.org \
    --to=agk@sourceware.org \
    --cc=lvm-devel@redhat.com \
    --cc=lvm2-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).