diff options
author | Zdenek Kabelac <zkabelac@redhat.com> | 2014-11-04 23:06:21 +0100 |
---|---|---|
committer | Zdenek Kabelac <zkabelac@redhat.com> | 2014-11-05 15:30:59 +0100 |
commit | 94e4d5fcf51abdfd42df9299109fbc9d22f2f92b (patch) | |
tree | 1a52f51ffb1996e55bb1a39a8a1644b62b110891 | |
parent | 6e5790f2d24d798e217fc005522c07e06c97adc9 (diff) | |
download | lvm2-94e4d5fcf51abdfd42df9299109fbc9d22f2f92b.tar.gz |
cleanup: avoid dm_list size calc in common path
Calculate dm_list_size only when there is not just a single
ont segment in list - so it's only counted on error path.
-rw-r--r-- | lib/metadata/lv_manip.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/lib/metadata/lv_manip.c b/lib/metadata/lv_manip.c index 30188e406..629262651 100644 --- a/lib/metadata/lv_manip.c +++ b/lib/metadata/lv_manip.c @@ -826,24 +826,25 @@ struct lv_segment *get_only_segment_using_this_lv(const struct logical_volume *l return NULL; } - if (dm_list_size(&lv->segs_using_this_lv) != 1) { - log_error("%s is expected to have only one segment using it, " - "while it has %d", lv->name, - dm_list_size(&lv->segs_using_this_lv)); - return NULL; - } + dm_list_iterate_items(sl, &lv->segs_using_this_lv) { + /* Needs to be he only item in list */ + if (!dm_list_end(&lv->segs_using_this_lv, &sl->list)) + break; - dm_list_iterate_items(sl, &lv->segs_using_this_lv) - break; /* first item */ + if (sl->count != 1) { + log_error("%s is expected to have only one segment using it, " + "while %s:%" PRIu32 " uses it %d times.", + display_lvname(lv), sl->seg->lv->name, sl->seg->le, sl->count); + return NULL; + } - if (sl->count != 1) { - log_error("%s is expected to have only one segment using it, " - "while %s:%" PRIu32 " uses it %d times", - lv->name, sl->seg->lv->name, sl->seg->le, sl->count); - return NULL; + return sl->seg; } - return sl->seg; + log_error("%s is expected to have only one segment using it, while it has %d.", + display_lvname(lv), dm_list_size(&lv->segs_using_this_lv)); + + return NULL; } /* |