From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20254 invoked by alias); 15 Nov 2011 17:15:09 -0000 Received: (qmail 20213 invoked by uid 9737); 15 Nov 2011 17:15:04 -0000 Date: Tue, 15 Nov 2011 17:15:00 -0000 Message-ID: <20111115171504.20211.qmail@sourceware.org> From: zkabelac@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2/lib/activate dev_manager.c Mailing-List: contact lvm2-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: lvm2-cvs-owner@sourceware.org X-SW-Source: 2011-11/txt/msg00060.txt.bz2 CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: zkabelac@sourceware.org 2011-11-15 17:15:04 Modified files: lib/activate : dev_manager.c Log message: Thin fix tpool layer Since we support snapshots of thin volumes, we could have more layers, so we have to check whether tpool layer is going to be inserted. As the _add_segment_to_dtree() is the only place that adds tpool segment, we may just check pointer (no strcmp for layer). Switch to use seg_is_ function instead of lv_is_. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/dev_manager.c.diff?cvsroot=lvm2&r1=1.248&r2=1.249 --- LVM2/lib/activate/dev_manager.c 2011/11/03 14:52:09 1.248 +++ LVM2/lib/activate/dev_manager.c 2011/11/15 17:15:03 1.249 @@ -1455,6 +1455,7 @@ struct lv_segment *seg_present; const char *target_name; struct lv_activate_opts lva; + static const char tpool_layer[] = "tpool"; /* Ensure required device-mapper targets are loaded */ seg_present = find_cow(seg->lv) ? : seg; @@ -1499,15 +1500,14 @@ } else if (lv_is_cow(seg->lv) && !layer) { if (!_add_new_lv_to_dtree(dm, dtree, seg->lv, laopts, "cow")) return_0; - } else if (!layer && (lv_is_thin_pool(seg->lv) || - lv_is_thin_volume(seg->lv))) { + } else if ((layer != tpool_layer) && seg_is_thin(seg)) { lva = *laopts; lva.real_pool = 1; - if (!_add_new_lv_to_dtree(dm, dtree, lv_is_thin_pool(seg->lv) ? - seg->lv : seg->pool_lv, &lva, "tpool")) + if (!_add_new_lv_to_dtree(dm, dtree, seg_is_thin_pool(seg) ? + seg->lv : seg->pool_lv, &lva, tpool_layer)) return_0; } else { - if (lv_is_thin_pool(seg->lv) && + if (seg_is_thin_pool(seg) && !_add_new_lv_to_dtree(dm, dtree, seg->pool_metadata_lv, laopts, NULL)) return_0;