Deactivate the shared snapshots if the origin is deactivated. Signed-off-by: Mikulas Patocka --- lib/activate/dev_manager.c | 12 ++++++++++++ libdm/libdm-deptree.c | 4 +++- 2 files changed, 15 insertions(+), 1 deletion(-) Index: LVM2.2.02.73/lib/activate/dev_manager.c =================================================================== --- LVM2.2.02.73.orig/lib/activate/dev_manager.c 2010-09-10 19:14:12.000000000 +0200 +++ LVM2.2.02.73/lib/activate/dev_manager.c 2010-09-10 19:14:51.000000000 +0200 @@ -1203,6 +1203,18 @@ static struct dm_tree *_create_partial_d if (!_add_lv_to_dtree(dm, dtree, dm_list_struct_base(snh, struct lv_segment, origin_list)->cow, 0)) goto_bad; + if (lv_is_multisnap_origin(lv)) { + struct lv_list *lvl; + dm_list_iterate_items(lvl, &lv->vg->lvs) { + struct logical_volume *snap_l = lvl->lv; + struct lv_segment *snap_s; + if (lv_is_multisnap_cow(snap_l) && + (snap_s = first_seg(snap_l)) && + snap_s->origin == lv) + _add_lv_to_dtree(dm, dtree, snap_l, 0); + } + } + /* Add any LVs used by segments in this LV */ dm_list_iterate_items(seg, &lv->segments) { for (s = 0; s < seg->area_count; s++) Index: LVM2.2.02.73/libdm/libdm-deptree.c =================================================================== --- LVM2.2.02.73.orig/libdm/libdm-deptree.c 2010-09-10 19:14:12.000000000 +0200 +++ LVM2.2.02.73/libdm/libdm-deptree.c 2010-09-10 19:14:14.000000000 +0200 @@ -2141,8 +2141,10 @@ int dm_tree_node_add_snapshot_shared_sna } seg->snapid = dm_pool_strdup(node->dtree->mem, snapid); - seg->origin = origin_node; + + node->activation_priority = 1; + if (!_link_tree_nodes(node, origin_node)) return_0;