summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryn M. Reeves <bmr@redhat.com>2016-12-12 22:49:31 +0000
committerBryn M. Reeves <bmr@redhat.com>2016-12-13 09:09:29 +0000
commit138e4336fd8422623df7daa362b98a4899f5fbec (patch)
treebb53764b6f5e07a4a49291026c694bb1d90acdab
parent93f420caf4e58f468919f40a9f3f9c20157affd0 (diff)
downloadlvm2-138e4336fd8422623df7daa362b98a4899f5fbec.tar.gz
libdm: fix region overlap tests
-rw-r--r--libdm/libdm-stats.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libdm/libdm-stats.c b/libdm/libdm-stats.c
index 56a38f27e..8c0428ea8 100644
--- a/libdm/libdm-stats.c
+++ b/libdm/libdm-stats.c
@@ -3880,6 +3880,12 @@ static int _stats_group_check_overlap(const struct dm_stats *dms,
i++;
}
+ /* A single region cannot overlap itself. */
+ if (i == 1) {
+ dm_pool_free(dms->mem, map);
+ return 1;
+ }
+
/* sort by extent.start */
qsort(map, count, sizeof(*map), _extent_start_compare);
@@ -3915,7 +3921,7 @@ merge:
goto merge;
dm_pool_free(dms->mem, map);
- return overlap;
+ return (overlap == 0);
}
static void _stats_copy_histogram_bounds(struct dm_histogram *to,