1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-28 02:50:41 +03:00

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_.
This commit is contained in:
Zdenek Kabelac 2011-11-15 17:15:03 +00:00
parent fb7817fe7c
commit 8ec016236a

View File

@ -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;