From 65f5ed533f02eccbc6ec7e496560191f10554aab Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Fri, 21 May 2010 12:45:18 +0000 Subject: [PATCH] Replicator: extend _lv_each_dependency() with dependencies for Replicator devices --- WHATS_NEW | 3 ++- lib/metadata/metadata.c | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/WHATS_NEW b/WHATS_NEW index 42b4a6c31..99888ffe8 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,6 +1,7 @@ Version 2.02.67 - =============================== - Add check_replicator_segment() for catching internal replicator errors. + Extend _lv_each_dependency() with Replicator dependencies. + Add check_replicator_segment() for catching internal Replicator errors. Initial lvm2 support for Replicator metadata handling. Checking open_count in all parents of presuspend_node. Added dm_tree_node_set_presuspend_node() to presuspend child in deactivate. diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index 36d817c89..b49f975d5 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -2001,6 +2001,8 @@ static int _lv_each_dependency(struct logical_volume *lv, struct lv_segment *lvseg; struct logical_volume *deps[] = { + (lv->rdevice && lv != lv->rdevice->lv) ? lv->rdevice->lv : 0, + (lv->rdevice && lv != lv->rdevice->slog) ? lv->rdevice->slog : 0, lv->snapshot ? lv->snapshot->origin : 0, lv->snapshot ? lv->snapshot->cow : 0 }; for (i = 0; i < sizeof(deps) / sizeof(*deps); ++i) { @@ -2011,6 +2013,8 @@ static int _lv_each_dependency(struct logical_volume *lv, dm_list_iterate_items(lvseg, &lv->segments) { if (lvseg->log_lv && !fn(lvseg->log_lv, data)) return_0; + if (lvseg->rlog_lv && !fn(lvseg->rlog_lv, data)) + return_0; for (s = 0; s < lvseg->area_count; ++s) { if (seg_type(lvseg, s) == AREA_LV && !fn(seg_lv(lvseg,s), data)) return_0; -- 2.43.5