public inbox for lvm2-cvs@sourceware.org
help / color / mirror / Atom feed
* LVM2 lib/metadata/lv_manip.c lib/metadata/snap ...
@ 2011-12-20  0:02 agk
  0 siblings, 0 replies; only message in thread
From: agk @ 2011-12-20  0:02 UTC (permalink / raw)
  To: lvm-devel, lvm2-cvs

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk@sourceware.org	2011-12-20 00:02:19

Modified files:
	lib/metadata   : lv_manip.c snapshot_manip.c 
	.              : WHATS_NEW 

Log message:
	Reinstate support for format1 snapshots, but issue deprecated warning.
	
	I anticipate removing support for snapshots with lvm1-formatted metadata in a
	future release.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/lv_manip.c.diff?cvsroot=lvm2&r1=1.338&r2=1.339
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/snapshot_manip.c.diff?cvsroot=lvm2&r1=1.51&r2=1.52
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.2205&r2=1.2206

--- LVM2/lib/metadata/lv_manip.c	2011/11/18 19:25:20	1.338
+++ LVM2/lib/metadata/lv_manip.c	2011/12/20 00:02:18	1.339
@@ -3138,6 +3138,8 @@
 {
 	struct volume_group *vg;
 	struct lvinfo info;
+	struct logical_volume *format1_origin = NULL;
+	int format1_reload_required = 0;
 
 	vg = lv->vg;
 
@@ -3195,6 +3197,10 @@
 		return 0;
 
 	if (lv_is_cow(lv)) {
+		/* Old format1 code */
+		if (!(lv->vg->fid->fmt->features & FMT_MDAS))
+			format1_origin = origin_from_cow(lv);
+
 		log_verbose("Removing snapshot %s", lv->name);
 		/* vg_remove_snapshot() will preload origin/former snapshots */
 		if (!vg_remove_snapshot(lv))
@@ -3214,12 +3220,31 @@
 		return 0;
 	}
 
+	/*
+	 * Old format1 code: If no snapshots left reload without -real.
+	 */
+	if (format1_origin && !lv_is_origin(format1_origin)) {
+		log_warn("WARNING: Support for snapshots with old LVM1-style metadata is deprecated.");
+		log_warn("WARNING: Please use lvconvert to update to lvm2 metadata at your convenience.");
+		format1_reload_required = 1;
+	}
+
 	/* store it on disks */
 	if (!vg_write(vg))
 		return_0;
 
+	/* format1 */
+	if (format1_reload_required && !suspend_lv(cmd, format1_origin))
+		log_error("Failed to refresh %s without snapshot.", format1_origin->name);
+
 	if (!vg_commit(vg))
 		return_0;
+ 
+	/* format1 */
+	if (format1_reload_required && !resume_lv(cmd, format1_origin)) {
+		log_error("Failed to resume %s.", format1_origin->name);
+		return 0;
+	}
 
 	backup(vg);
 
--- LVM2/lib/metadata/snapshot_manip.c	2011/07/19 16:23:52	1.51
+++ LVM2/lib/metadata/snapshot_manip.c	2011/12/20 00:02:18	1.52
@@ -208,6 +208,10 @@
 	cow->snapshot = NULL;
 	lv_set_visible(cow);
 
+	/* format1 must do the change in one step, with the commit last. */
+	if (!(origin->vg->fid->fmt->features & FMT_MDAS))
+		return 1;
+
 	if (!vg_write(origin->vg))
 		return_0;
 	if (!suspend_lv(origin->vg->cmd, origin)) {
--- LVM2/WHATS_NEW	2011/12/08 21:24:08	1.2205
+++ LVM2/WHATS_NEW	2011/12/20 00:02:19	1.2206
@@ -1,5 +1,7 @@
 Version 2.02.89 - 
 ==================================
+  Issue deprecation warning when removing last lvm1-format snapshot.
+  Reinstate support for snapshot removal with lvm1 format. (2.02.86)
   Add policy based automated repair of RAID logical volumes
   Don't allow two images to be split and tracked from a RAID LV at one time
   Don't allow size change of RAID LV that is tracking changes for a split image


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

only message in thread, other threads:[~2011-12-20  0:02 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-20  0:02 LVM2 lib/metadata/lv_manip.c lib/metadata/snap 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).