1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-02 01:18:26 +03:00

thin: properly check for status for max sizes metadata

When metadata LV size was over DM_THIN_MAX_METADATA_SIZE sectors,
the info() routine was incorrectly trying to match bigger size,
while we do never pass any bigger device.

Fixing a case, where lvs should be displaying status for metadata
LV with 16GB size.
This commit is contained in:
Zdenek Kabelac 2017-04-08 19:38:17 +02:00
parent 3503ef23e3
commit 1095322901
3 changed files with 11 additions and 0 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.170 - Version 2.02.170 -
================================== ==================================
Look for limited thin pool metadata size when using 16G metadata.
Add lvconvert pool creation rule disallowing options with poolmetadata. Add lvconvert pool creation rule disallowing options with poolmetadata.
Fix lvconvert when the same LV is incorrectly reused in options. Fix lvconvert when the same LV is incorrectly reused in options.
Fix lvconvert VG name validation in option values. Fix lvconvert VG name validation in option values.

View File

@ -260,6 +260,11 @@ static int _info_run(const char *dlid, struct dm_info *dminfo,
start *= seg_status->seg->le; start *= seg_status->seg->le;
length *= _seg_len(seg_status->seg); length *= _seg_len(seg_status->seg);
/* Uses max DM_THIN_MAX_METADATA_SIZE sectors for metadata device */
if (lv_is_thin_pool_metadata(seg_status->seg->lv) &&
(length > DM_THIN_MAX_METADATA_SIZE))
length = DM_THIN_MAX_METADATA_SIZE;
do { do {
target = dm_get_next_target(dmt, target, &target_start, target = dm_get_next_target(dmt, target, &target_start,
&target_length, &target_name, &target_params); &target_length, &target_name, &target_params);

View File

@ -37,6 +37,11 @@ lvcreate -L4M --chunksize 64k --poolmetadatasize 17G -T $vg/pool2 2>out
grep "WARNING: Maximum" out grep "WARNING: Maximum" out
check lv_field $vg/pool1_tmeta size "2.00m" check lv_field $vg/pool1_tmeta size "2.00m"
check lv_field $vg/pool2_tmeta size "16.00g" check lv_field $vg/pool2_tmeta size "16.00g"
# Check can start and see thinpool with metadata size above kernel limit
lvcreate -L4M --poolmetadatasize 16G -T $vg/poolM
check lv_field $vg/poolM data_percent "0.00"
lvremove -ff $vg lvremove -ff $vg
# Test automatic calculation of pool metadata size # Test automatic calculation of pool metadata size