All of lore.kernel.org
 help / color / mirror / Atom feed
From: agk@sourceware.org <agk@sourceware.org>
To: lvm-devel@redhat.com
Subject: LVM2 ./WHATS_NEW ./WHATS_NEW_DM lib/metadata/m ...
Date: 29 Nov 2010 18:35:38 -0000	[thread overview]
Message-ID: <20101129183538.23978.qmail@sourceware.org> (raw)

CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	agk at sourceware.org	2010-11-29 18:35:37

Modified files:
	.              : WHATS_NEW WHATS_NEW_DM 
	lib/metadata   : metadata.c 
	lib/format_text: import_vsn1.c 

Log message:
	Fix memory leak when VG allocation policy in metadata is invalid.
	Ignore unrecognised allocation policy found in metadata instead of aborting.
	Fix another missing vg_release() in _vg_read_by_vgid.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.1813&r2=1.1814
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW_DM.diff?cvsroot=lvm2&r1=1.426&r2=1.427
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.411&r2=1.412
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/format_text/import_vsn1.c.diff?cvsroot=lvm2&r1=1.77&r2=1.78

--- LVM2/WHATS_NEW	2010/11/29 12:19:58	1.1813
+++ LVM2/WHATS_NEW	2010/11/29 18:35:37	1.1814
@@ -1,16 +1,22 @@
 Version 2.02.78 - 
 ====================================
-  Fix memory leak in outf macro error path of _print_vg/lv/pvs/segment().
-  Fix missing reset of vg pointer after vg_release() in _vg_read_by_vgid().
-  Fix test for empty system_dir string in _init_backup().
-  Certain lvconvert invocations are now required to be done in two steps.
-  Fix missing context desctruction in err path of lvm1 fallback in lvm2_main().
-  Fix memory leak in error path of parse_loop_device_name() from dmsetup.
-  Fix missing dlclose in _init_formats() error path from init_format call.
-  Fix missing fclose for _umount() in dmeventd snapshot plugin.
-  Fix out-of-scope variable usage in process_each_lv().
-  Fix dm_task_destroy(NULL) call in _node_clear_table() error path.
-  Fix resource leak in _rm_blks().
+  Fix memory leak when VG allocation policy in metadata is invalid.
+  Ignore unrecognised allocation policy found in metadata instead of aborting.
+  Factor out tag printing into _out_tags and avoid leaking string buffer.
+  Remove some unused variables & assignments.
+  Add missing vg_release calls in _vg_read_by_vgid.
+Still to fix: LCK_CACHE/CLUSTER_VG printing/FIXME
+  Fix test for no system_dir in _init_backup().
+  Disallow lvconvert ops that both allocate & free supplied PEs in a single cmd.
+  Fix liblvm seg_size to give bytes not sectors.
+  Add functions to look up LV/PV by name/uuid to liblvm.
+  Free cmd_context if fallback to LVM1 fails in lvm2_main().
+  Free device name buffer in dmsetup parse_loop_device_name() error paths.
+  Close format lib if init_format_fn fails in _init_formats().
+  Don't leave /proc/mounts open after dmeventd snapshot event processing.
+  Fix out-of-scope arg_vgnames use in process_each_lv().
+  Remove incorrect dm_task_destroy(NULL) from _node_clear_table() error path.
+  Add missing closedir in _rm_blks after removing stray LVM1 VG files.
   Suppress 'No PV label' message when removing several PVs without mdas.
   Fix default /etc/lvm permissions to be 0755. (2.02.66)
 
--- LVM2/WHATS_NEW_DM	2010/11/22 18:37:56	1.426
+++ LVM2/WHATS_NEW_DM	2010/11/29 18:35:37	1.427
@@ -1,5 +1,6 @@
 Version 1.02.59 - 
 ====================================
+  Remove superfluous checks for NULL before calling dm_free.
 
 Version 1.02.58 - 22nd November 2010
 ====================================
--- LVM2/lib/metadata/metadata.c	2010/11/29 11:08:14	1.411
+++ LVM2/lib/metadata/metadata.c	2010/11/29 18:35:37	1.412
@@ -3086,6 +3086,7 @@
 			  vg->name);
 
 	dm_pool_destroy(vg->vgmem);
+	vg->vgmem = NULL;
 }
 
 /* This is only called by lv_from_lvid, which is only called from
@@ -3098,7 +3099,7 @@
 {
 	const char *vgname;
 	struct dm_list *vgnames;
-	struct volume_group *vg = NULL;
+	struct volume_group *vg;
 	struct lvmcache_vginfo *vginfo;
 	struct str_list *strl;
 	int consistent = 0;
@@ -3109,20 +3110,17 @@
 		if ((vg = _vg_read(cmd, NULL, vgid, 1,
 				   &consistent, precommitted)) &&
 		    !strncmp((char *)vg->id.uuid, vgid, ID_LEN)) {
-
-			if (!consistent) {
+			if (!consistent)
 				log_error("Volume group %s metadata is "
 					  "inconsistent", vg->name);
-			}
 			return vg;
 		}
 		vg_release(vg);
-		vg = NULL; /* reset so memlock goto out is safe */
 	}
 
 	/* Mustn't scan if memory locked: ensure cache gets pre-populated! */
 	if (memlock())
-		goto out;
+		return_NULL;
 
 	/* FIXME Need a genuine read by ID here - don't vg_read_internal by name! */
 	/* FIXME Disabled vgrenames while active for now because we aren't
@@ -3132,7 +3130,7 @@
 	lvmcache_label_scan(cmd, 2);
 	if (!(vgnames = get_vgnames(cmd, 0))) {
 		log_error("vg_read_by_vgid: get_vgnames failed");
-		goto out;
+		return NULL;
 	}
 
 	dm_list_iterate_items(strl, vgnames) {
@@ -3143,18 +3141,17 @@
 		if ((vg = _vg_read(cmd, vgname, vgid, 1, &consistent,
 				   precommitted)) &&
 		    !strncmp((char *)vg->id.uuid, vgid, ID_LEN)) {
-
 			if (!consistent) {
 				log_error("Volume group %s metadata is "
 					  "inconsistent", vgname);
-				goto out;
+				vg_release(vg);
+				return NULL;
 			}
 			return vg;
 		}
+		vg_release(vg);
 	}
 
-out:
-	vg_release(vg);
 	return NULL;
 }
 
--- LVM2/lib/format_text/import_vsn1.c	2010/07/09 15:34:44	1.77
+++ LVM2/lib/format_text/import_vsn1.c	2010/11/29 18:35:37	1.78
@@ -529,8 +529,10 @@
 		}
 
 		lv->alloc = get_alloc_from_string(cv->v.str);
-		if (lv->alloc == ALLOC_INVALID)
-			return_0;
+		if (lv->alloc == ALLOC_INVALID) {
+			log_warn("WARNING: Ignoring unrecognised allocation policy %s for LV %s", cv->v.str, lv->name);
+			lv->alloc = ALLOC_INHERIT;
+		}
 	}
 
 	if (!_read_int32(lvn, "read_ahead", &lv->read_ahead))
@@ -660,7 +662,8 @@
 		return_NULL;
 
 	/* skip any top-level values */
-	for (vgn = cft->root; (vgn && vgn->v); vgn = vgn->sib) ;
+	for (vgn = cft->root; (vgn && vgn->v); vgn = vgn->sib)
+		;
 
 	if (!vgn) {
 		log_error("Couldn't find volume group in file.");
@@ -738,12 +741,14 @@
 		struct config_value *cv = cn->v;
 		if (!cv || !cv->v.str) {
 			log_error("allocation_policy must be a string.");
-			return 0;
+			goto bad;
 		}
 
 		vg->alloc = get_alloc_from_string(cv->v.str);
-		if (vg->alloc == ALLOC_INVALID)
-			return_0;
+		if (vg->alloc == ALLOC_INVALID) {
+			log_warn("WARNING: Ignoring unrecognised allocation policy %s for VG %s", cv->v.str, vg->name);
+			vg->alloc = ALLOC_NORMAL;
+		}
 	}
 
 	if (!_read_uint32(vgn, "metadata_copies", &vg->mda_copies)) {



                 reply	other threads:[~2010-11-29 18:35 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=20101129183538.23978.qmail@sourceware.org \
    --to=agk@sourceware.org \
    --cc=lvm-devel@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.