summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2015-01-30 16:22:11 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2015-01-30 16:22:11 +0100
commit40102ae01401741e007066373e8013f16c694f89 (patch)
treebc194eb110fe20bb7cb1ea472cf98906bcd380dc /lib
parenta29a3ed3c37f72fc517ff6045b6105611abc1383 (diff)
downloadlvm2-40102ae01401741e007066373e8013f16c694f89.tar.gz
thin: fix upgrade regression
Older lvm2 tools where always providing linear mapping for thin pool. Recent lvm2 version however support external usage of thin pool and empty/unused pools are loaded without such external linear mapping. So this patch covers 'upgrade' problem, where older tool has activated thin-pool with 'linear' layer mapping, and newer tools didn't expected such mapping to exist and were not able to deactivate such table. So before checking for new layout in dm-table, check if there is not an old one already there.
Diffstat (limited to 'lib')
-rw-r--r--lib/activate/activate.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/activate/activate.c b/lib/activate/activate.c
index dbfb42705..c0545317e 100644
--- a/lib/activate/activate.c
+++ b/lib/activate/activate.c
@@ -655,8 +655,13 @@ static int _lv_info(struct cmd_context *cmd, const struct logical_volume *lv,
}
/* New thin-pool has no layer, but -tpool suffix needs to be queried */
- if (!use_layer && lv_is_new_thin_pool(lv))
- use_layer = 1;
+ if (!use_layer && lv_is_new_thin_pool(lv)) {
+ /* Check if there isn't existing old thin pool mapping in the table */
+ if (!dev_manager_info(cmd->mem, lv, NULL, 0, 0, &dminfo, NULL, NULL))
+ return_0;
+ if (!dminfo.exists)
+ use_layer = 1;
+ }
if (seg_status)
seg_status->seg = seg;