mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-02 01:18:26 +03:00
Check all tags and LV names are in a valid form in vg_validate.
This commit is contained in:
parent
0da6c851bd
commit
d860272b00
@ -1,5 +1,6 @@
|
||||
Version 2.02.93 -
|
||||
====================================
|
||||
Check all tags and LV names are in a valid form in vg_validate.
|
||||
Add tmpfiles.d style configuration for lvm2 lock and run directory.
|
||||
Add configure --with-tmpfilesdir for dir holding volatile-file configuration.
|
||||
Allow 'lvconvert --repair' to operate on RAID 4/5/6
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
|
||||
* Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved.
|
||||
* Copyright (C) 2004-2012 Red Hat, Inc. All rights reserved.
|
||||
*
|
||||
* This file is part of LVM2.
|
||||
*
|
||||
@ -2294,6 +2294,7 @@ int vg_validate(struct volume_group *vg)
|
||||
struct pv_list *pvl;
|
||||
struct lv_list *lvl;
|
||||
struct lv_segment *seg;
|
||||
struct str_list *sl;
|
||||
char uuid[64] __attribute__((aligned(8)));
|
||||
int r = 1;
|
||||
uint32_t hidden_lv_count = 0, lv_count = 0, lv_visible_count = 0;
|
||||
@ -2313,6 +2314,13 @@ int vg_validate(struct volume_group *vg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
dm_list_iterate_items(sl, &vg->tags)
|
||||
if (!validate_tag(sl->str)) {
|
||||
log_error(INTERNAL_ERROR "VG %s tag %s has invalid form.",
|
||||
vg->name, sl->str);
|
||||
r = 0;
|
||||
}
|
||||
|
||||
dm_list_iterate_items(pvl, &vg->pvs) {
|
||||
if (++pv_count > vg->pv_count) {
|
||||
log_error(INTERNAL_ERROR "PV list corruption detected in VG %s.", vg->name);
|
||||
@ -2345,6 +2353,13 @@ int vg_validate(struct volume_group *vg)
|
||||
r = 0;
|
||||
}
|
||||
|
||||
dm_list_iterate_items(sl, &pvl->pv->tags)
|
||||
if (!validate_tag(sl->str)) {
|
||||
log_error(INTERNAL_ERROR "PV %s tag %s has invalid form.",
|
||||
pv_dev_name(pvl->pv), sl->str);
|
||||
r = 0;
|
||||
}
|
||||
|
||||
if (!dm_hash_insert_binary(vhash.pvid, &pvl->pv->id,
|
||||
sizeof(pvl->pv->id), pvl->pv)) {
|
||||
log_error("Failed to hash pvid.");
|
||||
@ -2384,6 +2399,18 @@ int vg_validate(struct volume_group *vg)
|
||||
r = 0;
|
||||
}
|
||||
|
||||
if (!validate_name(lvl->lv->name)) {
|
||||
log_error(INTERNAL_ERROR "LV name %s has invalid form.", lvl->lv->name);
|
||||
r = 0;
|
||||
}
|
||||
|
||||
dm_list_iterate_items(sl, &lvl->lv->tags)
|
||||
if (!validate_tag(sl->str)) {
|
||||
log_error(INTERNAL_ERROR "LV %s tag %s has invalid form.",
|
||||
lvl->lv->name, sl->str);
|
||||
r = 0;
|
||||
}
|
||||
|
||||
if (lvl->lv->status & VISIBLE_LV)
|
||||
continue;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user