[lvm-devel] master - properties: only thin-pool provides discards
Zdenek Kabelac
zkabelac at sourceware.org
Fri Mar 17 13:22:57 UTC 2017
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=4a271e7ee720402d3045cd16b04fd7296131bdf5
Commit: 4a271e7ee720402d3045cd16b04fd7296131bdf5
Parent: d211c98581ee0ce9d1a919d64fd4d0df157c3069
Author: Zdenek Kabelac <zkabelac at redhat.com>
AuthorDate: Fri Mar 17 14:01:18 2017 +0100
Committer: Zdenek Kabelac <zkabelac at redhat.com>
CommitterDate: Fri Mar 17 14:22:33 2017 +0100
properties: only thin-pool provides discards
Quering non-thin-pool segment for discard property may lead
to intenal error if the segment had set 'out-of-range' value,
so only thin-pool is allowed, for other it returns NULL.
---
lib/metadata/lv.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/lib/metadata/lv.c b/lib/metadata/lv.c
index e58de66..b24c4aa 100644
--- a/lib/metadata/lv.c
+++ b/lib/metadata/lv.c
@@ -220,7 +220,12 @@ char *lvseg_segtype_dup(struct dm_pool *mem, const struct lv_segment *seg)
char *lvseg_discards_dup(struct dm_pool *mem, const struct lv_segment *seg)
{
- return dm_pool_strdup(mem, get_pool_discards_name(seg->discards));
+ if (lv_is_thin_pool(seg->lv))
+ return dm_pool_strdup(mem, get_pool_discards_name(seg->discards));
+
+ log_error("Cannot query non thin-pool segment of LV %s for discards property.",
+ display_lvname(seg->lv));
+ return NULL;
}
char *lvseg_kernel_discards_dup_with_info_and_seg_status(struct dm_pool *mem, const struct lv_with_info_and_seg_status *lvdm)
More information about the lvm-devel
mailing list