Gitweb:
http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=82a1c6ccc141de...
Commit: 82a1c6ccc141de84f3450d97f8049c5f2d08863c
Parent: 7fcc36bf94943ab9b5dc5b295c925d790f1fb081
Author: Peter Rajnoha <prajnoha(a)redhat.com>
AuthorDate: Thu Mar 12 14:49:10 2015 +0100
Committer: Peter Rajnoha <prajnoha(a)redhat.com>
CommitterDate: Fri Aug 21 11:15:53 2015 +0200
metadata: schedule PV for header rewrite if adding a PV to VG or restoring VG
When adding PV to VG, we need to rewrite PV header as there's a flip
in PV_EXT_USED flag. The same applies if we're restoring VG from backup.
---
lib/format_text/archiver.c | 8 ++++++++
lib/metadata/metadata.c | 14 ++++++--------
2 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/lib/format_text/archiver.c b/lib/format_text/archiver.c
index e3d3d57..fa7ce88 100644
--- a/lib/format_text/archiver.c
+++ b/lib/format_text/archiver.c
@@ -325,6 +325,7 @@ int backup_restore_vg(struct cmd_context *cmd, struct volume_group
*vg, int drop
struct pv_list *pvl;
struct format_instance *fid;
struct format_instance_ctx fic;
+ struct pv_to_write *pvw;
uint32_t tmp;
/*
@@ -353,6 +354,13 @@ int backup_restore_vg(struct cmd_context *cmd, struct volume_group
*vg, int drop
/* Add any metadata areas on the PVs */
dm_list_iterate_items(pvl, &vg->pvs) {
+ if (!(pvw = dm_pool_zalloc(vg->vgmem, sizeof(*pvw)))) {
+ log_error("pv_to_write allocation for '%s' failed",
pv_dev_name(pvl->pv));
+ return 0;
+ }
+ pvw->pv = pvl->pv;
+ dm_list_add(&vg->pvs_to_write, &pvw->list);
+
tmp = vg->extent_size;
vg->extent_size = 0;
if (!vg->fid->fmt->ops->pv_setup(vg->fid->fmt, pvl->pv, vg)) {
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 4efd47a..cf54f58 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -275,15 +275,13 @@ int add_pv_to_vg(struct volume_group *vg, const char *pv_name,
break;
}
- if (pv->status & UNLABELLED_PV) {
- if (!(pvw = dm_pool_zalloc(mem, sizeof(*pvw)))) {
- log_error("pv_to_write allocation for '%s' failed", pv_name);
- return 0;
- }
- pvw->pv = pv;
- pvw->pp = new_pv ? pp : NULL;
- dm_list_add(&vg->pvs_to_write, &pvw->list);
+ if (!(pvw = dm_pool_zalloc(mem, sizeof(*pvw)))) {
+ log_error("pv_to_write allocation for '%s' failed", pv_name);
+ return 0;
}
+ pvw->pv = pv;
+ pvw->pp = new_pv ? pp : NULL;
+ dm_list_add(&vg->pvs_to_write, &pvw->list);
return 1;
}