diff options
author | Peter Rajnoha <prajnoha@redhat.com> | 2016-03-21 14:38:49 +0100 |
---|---|---|
committer | Peter Rajnoha <prajnoha@redhat.com> | 2016-03-21 14:39:11 +0100 |
commit | f231bdb20bdc885460dfc49db744147bb1bc90da (patch) | |
tree | ebe300c8769ca0dd36c612cafa41c39ab78dec8f | |
parent | 03b0a786403ad1762bfbbe354756a9b83ee6629c (diff) | |
download | lvm2-f231bdb20bdc885460dfc49db744147bb1bc90da.tar.gz |
metadata: use own mem pool to report PV device mismatch in VG
-rw-r--r-- | lib/metadata/metadata.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c index 86fb7cdec..2c5ede5e3 100644 --- a/lib/metadata/metadata.c +++ b/lib/metadata/metadata.c @@ -4582,9 +4582,8 @@ static struct volume_group *_vg_read(struct cmd_context *cmd, #define DEV_LIST_DELIM ", " -static int _check_devs_used_correspond_with_lv(struct dm_list *list, struct logical_volume *lv) +static int _check_devs_used_correspond_with_lv(struct dm_pool *mem, struct dm_list *list, struct logical_volume *lv) { - struct dm_pool *mem = lv->vg->vgmem; struct device_list *dl; int found_inconsistent = 0; struct device *dev; @@ -4657,6 +4656,7 @@ bad: static int _check_devs_used_correspond_with_vg(struct volume_group *vg) { + struct dm_pool *mem; char vgid[ID_LEN + 1]; struct pv_list *pvl; struct lv_list *lvl; @@ -4689,10 +4689,17 @@ static int _check_devs_used_correspond_with_vg(struct volume_group *vg) } if (found_inconsistent) { + if (!(mem = dm_pool_create("vg_devs_check", 1024))) + return_0; + dm_list_iterate_items(lvl, &vg->lvs) { - if (!_check_devs_used_correspond_with_lv(list, lvl->lv)) + if (!_check_devs_used_correspond_with_lv(mem, list, lvl->lv)) { + dm_pool_destroy(mem); return_0; + } } + + dm_pool_destroy(mem); } return 1; |