1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

Fix non-orphan pvchange -u.

This commit is contained in:
Alasdair Kergon 2005-05-24 17:38:26 +00:00
parent 3f910647c3
commit bd236f658d
2 changed files with 22 additions and 0 deletions

View File

@ -1,5 +1,6 @@
Version 2.01.11 - Version 2.01.11 -
============================== ==============================
Fix non-orphan pvchange -u.
Fix vgmerge to handle duplicate LVIDs. Fix vgmerge to handle duplicate LVIDs.
Move archiver code from tools into library. Move archiver code from tools into library.
vgscan/change/display/vgs automatically create metadata backups if needed. vgscan/change/display/vgs automatically create metadata backups if needed.

View File

@ -24,9 +24,12 @@ static int _pvchange_single(struct cmd_context *cmd, struct physical_volume *pv,
struct pv_list *pvl; struct pv_list *pvl;
struct list mdas; struct list mdas;
uint64_t sector; uint64_t sector;
uint32_t orig_pe_alloc_count;
const char *pv_name = dev_name(pv->dev); const char *pv_name = dev_name(pv->dev);
const char *tag = NULL; const char *tag = NULL;
const char *orig_vg_name;
char uuid[64];
int consistent = 1; int consistent = 1;
int allocatable = 0; int allocatable = 0;
@ -178,6 +181,24 @@ static int _pvchange_single(struct cmd_context *cmd, struct physical_volume *pv,
pv_name); pv_name);
return 0; return 0;
} }
if (!id_write_format(&pv->id, uuid, sizeof(uuid))) {
stack;
return 0;
}
log_verbose("Changing uuid of %s to %s.", pv_name, uuid);
if (*pv->vg_name) {
orig_vg_name = pv->vg_name;
orig_pe_alloc_count = pv->pe_alloc_count;
pv->vg_name = ORPHAN;
pv->pe_alloc_count = 0;
if (!(pv_write(cmd, pv, NULL, INT64_C(-1)))) {
log_error("pv_write with new uuid failed "
"for %s.", pv_name);
return 0;
}
pv->vg_name = orig_vg_name;
pv->pe_alloc_count = orig_pe_alloc_count;
}
} }
log_verbose("Updating physical volume \"%s\"", pv_name); log_verbose("Updating physical volume \"%s\"", pv_name);