1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-03 05:18:29 +03:00

Add vg_set_fid function to change VG format instance.

This function also sets a reference to a new VG format instance for all PVs
that are part of the VG so the PV-VG interconnection is consistent after the
change.
This commit is contained in:
Peter Rajnoha 2011-02-21 12:10:58 +00:00
parent c0c21864c6
commit f8b78ec613
3 changed files with 13 additions and 1 deletions

View File

@ -308,10 +308,11 @@ int backup_restore_vg(struct cmd_context *cmd, struct volume_group *vg)
fic.type = FMT_INSTANCE_VG | FMT_INSTANCE_MDAS | FMT_INSTANCE_AUX_MDAS;
fic.context.vg_ref.vg_name = vg->name;
fic.context.vg_ref.vg_id = NULL;
if (!(vg->fid = cmd->fmt->ops->create_instance(cmd->fmt, &fic))) {
if (!(fid = cmd->fmt->ops->create_instance(cmd->fmt, &fic))) {
log_error("Failed to allocate format instance");
return 0;
}
vg_set_fid(vg, fid);
/*
* Setting vg->old_name to a blank value will explicitly

View File

@ -3931,6 +3931,16 @@ uint32_t vg_lock_newname(struct cmd_context *cmd, const char *vgname)
return FAILED_EXIST;
}
void vg_set_fid(struct volume_group *vg,
struct format_instance *fid)
{
struct pv_list *pvl;
vg->fid = fid;
dm_list_iterate_items(pvl, &vg->pvs)
pvl->pv->fid = fid;
}
static int _convert_key_to_string(const char *key, size_t key_len,
unsigned sub_key, char *buf, size_t buf_len)
{

View File

@ -190,6 +190,7 @@ struct metadata_area *mda_copy(struct dm_pool *mem,
unsigned mda_is_ignored(struct metadata_area *mda);
void mda_set_ignored(struct metadata_area *mda, unsigned ignored);
unsigned mda_locns_match(struct metadata_area *mda1, struct metadata_area *mda2);
void vg_set_fid(struct volume_group *vg, struct format_instance *fid);
int fid_add_mda(struct format_instance *fid, struct metadata_area *mda,
const char *key, size_t key_len, const unsigned sub_key);
int fid_add_mdas(struct format_instance *fid, struct dm_list *mdas,