summaryrefslogtreecommitdiffstats
path: root/lib/activate
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2011-11-15 17:15:03 +0000
committerZdenek Kabelac <zkabelac@redhat.com>2011-11-15 17:15:03 +0000
commit8ec016236a84878b9b9a88424fe4015db88dc981 (patch)
treeb119b270837b91c75b16d43d7dc71e0f223bb1c1 /lib/activate
parentfb7817fe7cff9c83598c1ab01d8f0f4f6fa6d52b (diff)
downloadlvm2-8ec016236a84878b9b9a88424fe4015db88dc981.tar.gz
lvm2-8ec016236a84878b9b9a88424fe4015db88dc981.tar.xz
lvm2-8ec016236a84878b9b9a88424fe4015db88dc981.zip
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_.
Diffstat (limited to 'lib/activate')
-rw-r--r--lib/activate/dev_manager.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index 1e404e4a..80ae8dd5 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -1455,6 +1455,7 @@ static int _add_segment_to_dtree(struct dev_manager *dm,
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 @@ static int _add_segment_to_dtree(struct dev_manager *dm,
} 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;