diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2011-11-15 17:15:03 +0000 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2011-11-15 17:15:03 +0000 |
commit | 8ec016236a84878b9b9a88424fe4015db88dc981 (patch) | |
tree | b119b270837b91c75b16d43d7dc71e0f223bb1c1 /lib/activate | |
parent | fb7817fe7cff9c83598c1ab01d8f0f4f6fa6d52b (diff) | |
download | lvm2-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.c | 10 |
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; |