diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2015-01-30 16:22:11 +0100 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2015-01-30 16:22:11 +0100 |
commit | 40102ae01401741e007066373e8013f16c694f89 (patch) | |
tree | bc194eb110fe20bb7cb1ea472cf98906bcd380dc /lib | |
parent | a29a3ed3c37f72fc517ff6045b6105611abc1383 (diff) | |
download | lvm2-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.c | 9 |
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; |