summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2014-04-17 10:42:41 +0200
committerZdenek Kabelac <zkabelac@redhat.com>2014-04-18 16:38:47 +0200
commit47a60369a0473bb5f4f8a9d153c83d1a3f4f187d (patch)
treeb87f6fd58be3fb8f3e197b36766df25765ad4653
parentb5f8f452ac563ef07513e770b3202c6dc209443c (diff)
downloadlvm2-47a60369a0473bb5f4f8a9d153c83d1a3f4f187d.tar.gz
unknown: fix mempool used for name allocation
Use cmd libmem mempool for name allocation, since mem mempool is released after each clvmd command.
-rw-r--r--WHATS_NEW1
-rw-r--r--lib/unknown/unknown.c2
-rw-r--r--test/shell/unknown-segment.sh4
3 files changed, 6 insertions, 1 deletions
diff --git a/WHATS_NEW b/WHATS_NEW
index dfa50e841..e7c9b0469 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.107 -
==================================
+ Use proper libmem mempool for allocation of unknown segment name.
Add --readonly to reporting and display tools for lock-free metadata access.
Add locking_type 5 for dummy locking for tools that do not need any locks.
Fix _recover_vg() error path when lock conversion fails.
diff --git a/lib/unknown/unknown.c b/lib/unknown/unknown.c
index f2a65eb82..848a3694e 100644
--- a/lib/unknown/unknown.c
+++ b/lib/unknown/unknown.c
@@ -95,7 +95,7 @@ struct segment_type *init_unknown_segtype(struct cmd_context *cmd, const char *n
segtype->cmd = cmd;
segtype->ops = &_unknown_ops;
- segtype->name = dm_pool_strdup(cmd->mem, name);
+ segtype->name = dm_pool_strdup(cmd->libmem, name);
segtype->private = NULL;
segtype->flags = SEG_UNKNOWN | SEG_VIRTUAL | SEG_CANNOT_BE_ZEROED;
diff --git a/test/shell/unknown-segment.sh b/test/shell/unknown-segment.sh
index 8ec48d22d..b4a5dfda6 100644
--- a/test/shell/unknown-segment.sh
+++ b/test/shell/unknown-segment.sh
@@ -23,6 +23,10 @@ vgcfgrestore -f bak0 $vg
# we have on-disk metadata with unknown segments now
not lvchange -aey $vg/$lv1 # check that activation is refused
+# try once more to catch invalid memory access with valgrind
+# when clvmd flushes cmd mem pool
+not lvchange -aey $vg/$lv1 # check that activation is refused
+
vgcfgbackup -f bak1 $vg
cat bak1
sed -e 's,unstriped,striped,;s,unmirror,mirror,' -i.orig bak1