summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2015-11-30 21:24:31 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2015-12-01 13:01:28 +0100
commit6336ef98d41b8c5b1435de08855aa66c8fd527c2 (patch)
treeb8850614130eceb1b1231df6c3dec7dbb64dbbbd
parentc717ea5fc0b5096a1655313017611b4305e883d3 (diff)
downloadlvm2-6336ef98d41b8c5b1435de08855aa66c8fd527c2.tar.gz
lib: pass mem pool to check_transient_status
check_transient_status() may need to allocate some memory, so pass in already existing mem pool.
-rw-r--r--WHATS_NEW1
-rw-r--r--lib/activate/dev_manager.c2
-rw-r--r--lib/metadata/segtype.h3
-rw-r--r--lib/mirror/mirrored.c2
4 files changed, 5 insertions, 3 deletions
diff --git a/WHATS_NEW b/WHATS_NEW
index d2bdb5874..dcd2b22f8 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.137 -
=====================================
+ Add mem pool arg for check_transient_status() target function.
Avoid misleading error with -m is omitted with lvconvert to raid types.
Version 2.02.136 - 28th November 2015
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index 4b378452d..4eff5cb74 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -1114,7 +1114,7 @@ int dev_manager_transient(struct dev_manager *dm, const struct logical_volume *l
}
if (seg->segtype->ops->check_transient_status &&
- !seg->segtype->ops->check_transient_status(seg, params))
+ !seg->segtype->ops->check_transient_status(dm->mem, seg, params))
goto_out;
} while (next);
diff --git a/lib/metadata/segtype.h b/lib/metadata/segtype.h
index 72c64f9b7..41adf924a 100644
--- a/lib/metadata/segtype.h
+++ b/lib/metadata/segtype.h
@@ -192,7 +192,8 @@ struct segtype_handler {
struct dm_tree_node *node, uint64_t len,
uint32_t *pvmove_mirror_count);
int (*target_status_compatible) (const char *type);
- int (*check_transient_status) (struct lv_segment *seg, char *params);
+ int (*check_transient_status) (struct dm_pool *mem,
+ struct lv_segment *seg, char *params);
int (*target_percent) (void **target_state,
dm_percent_t *percent,
struct dm_pool * mem,
diff --git a/lib/mirror/mirrored.c b/lib/mirror/mirrored.c
index 6e189b2fb..b810c706b 100644
--- a/lib/mirror/mirrored.c
+++ b/lib/mirror/mirrored.c
@@ -213,7 +213,7 @@ static int _mirrored_target_percent(void **target_state,
return 1;
}
-static int _mirrored_transient_status(struct lv_segment *seg, char *params)
+static int _mirrored_transient_status(struct dm_pool *mem, struct lv_segment *seg, char *params)
{
unsigned i, j;
struct logical_volume *lv = seg->lv;