All of lore.kernel.org
 help / color / mirror / Atom feed
* master - thin: properly check for status for max sizes metadata
@ 2017-04-12 19:38 Zdenek Kabelac
  0 siblings, 0 replies; only message in thread
From: Zdenek Kabelac @ 2017-04-12 19:38 UTC (permalink / raw)
  To: lvm-devel

Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=109532290138d3b8b535457150052b6bda4f797c
Commit:        109532290138d3b8b535457150052b6bda4f797c
Parent:        3503ef23e30da87f16b881248be92842a774d7d9
Author:        Zdenek Kabelac <zkabelac@redhat.com>
AuthorDate:    Sat Apr 8 19:38:17 2017 +0200
Committer:     Zdenek Kabelac <zkabelac@redhat.com>
CommitterDate: Wed Apr 12 21:34:08 2017 +0200

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.
---
 WHATS_NEW                       |    1 +
 lib/activate/dev_manager.c      |    5 +++++
 test/shell/lvcreate-thin-big.sh |    5 +++++
 3 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/WHATS_NEW b/WHATS_NEW
index a597c42..bc958e2 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.170 - 
 ==================================
+  Look for limited thin pool metadata size when using 16G metadata.
   Add lvconvert pool creation rule disallowing options with poolmetadata.
   Fix lvconvert when the same LV is incorrectly reused in options.
   Fix lvconvert VG name validation in option values.
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index a2e399d..8f71771 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -260,6 +260,11 @@ static int _info_run(const char *dlid, struct dm_info *dminfo,
 		start *= seg_status->seg->le;
 		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 {
 			target = dm_get_next_target(dmt, target, &target_start,
 						    &target_length, &target_name, &target_params);
diff --git a/test/shell/lvcreate-thin-big.sh b/test/shell/lvcreate-thin-big.sh
index 9abc1fd..da7812f 100644
--- a/test/shell/lvcreate-thin-big.sh
+++ b/test/shell/lvcreate-thin-big.sh
@@ -37,6 +37,11 @@ lvcreate -L4M --chunksize 64k --poolmetadatasize 17G -T $vg/pool2 2>out
 grep "WARNING: Maximum" out
 check lv_field $vg/pool1_tmeta size "2.00m"
 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
 
 # Test automatic calculation of pool metadata size



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2017-04-12 19:38 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-12 19:38 master - thin: properly check for status for max sizes metadata Zdenek Kabelac

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.