[lvm-devel] LVM2/lib format_text/archiver.c metadata/metad ...
prajnoha at sourceware.org
prajnoha at sourceware.org
Mon Feb 21 12:11:03 UTC 2011
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: prajnoha at sourceware.org 2011-02-21 12:10:59
Modified files:
lib/format_text: archiver.c
lib/metadata : metadata.c metadata.h
Log message:
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.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/format_text/archiver.c.diff?cvsroot=lvm2&r1=1.39&r2=1.40
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.426&r2=1.427
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.h.diff?cvsroot=lvm2&r1=1.231&r2=1.232
--- LVM2/lib/format_text/archiver.c 2011/02/21 12:07:03 1.39
+++ LVM2/lib/format_text/archiver.c 2011/02/21 12:10:58 1.40
@@ -308,10 +308,11 @@
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
--- LVM2/lib/metadata/metadata.c 2011/02/21 12:07:03 1.426
+++ LVM2/lib/metadata/metadata.c 2011/02/21 12:10:58 1.427
@@ -3931,6 +3931,16 @@
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)
{
--- LVM2/lib/metadata/metadata.h 2011/02/21 12:05:50 1.231
+++ LVM2/lib/metadata/metadata.h 2011/02/21 12:10:59 1.232
@@ -190,6 +190,7 @@
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,
More information about the lvm-devel
mailing list