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.60/lib/activate/dev_manager.c =================================================================== --- LVM2.2.02.60.orig/lib/activate/dev_manager.c 2010-02-10 22:43:04.000000000 +0100 +++ LVM2.2.02.60/lib/activate/dev_manager.c 2010-02-10 22:43:07.000000000 +0100 @@ -1005,6 +1005,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)) 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); + } + } + /* 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.60/libdm/libdm-deptree.c =================================================================== --- LVM2.2.02.60.orig/libdm/libdm-deptree.c 2010-02-10 22:42:46.000000000 +0100 +++ LVM2.2.02.60/libdm/libdm-deptree.c 2010-02-10 22:43:07.000000000 +0100 @@ -1908,8 +1908,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;