summaryrefslogtreecommitdiffstats
path: root/Assemble.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2009-10-13 17:41:53 -0700
committerDan Williams <dan.j.williams@intel.com>2009-10-13 17:41:53 -0700
commit6e46bf344bf34a688696e240596f8259e328eea9 (patch)
tree38563c669312f698e0e39ef048828e20e469f2ad /Assemble.c
parent955e9ea1394662f097a88bb3d62c56ab50448597 (diff)
downloadmdadm-6e46bf344bf34a688696e240596f8259e328eea9.tar.gz
mdadm-6e46bf344bf34a688696e240596f8259e328eea9.tar.xz
mdadm-6e46bf344bf34a688696e240596f8259e328eea9.zip
imsm: add --update=uuid support
When disks have conflicting container memberships (same container ids but incompatible member arrays) --update=uuid can be used to move offenders to a new container id by changing 'orig_family_num'. Note that this only supports random updates of the uuid as the actual uuid is synthesized. We also need to communicate the new 'orig_family_num' value to all disks involved in the update. A new field 'update_private' is added to struct mdinfo to allow this information to be transmitted. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'Assemble.c')
-rw-r--r--Assemble.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/Assemble.c b/Assemble.c
index 4578906..7da0905 100644
--- a/Assemble.c
+++ b/Assemble.c
@@ -565,6 +565,7 @@ int Assemble(struct supertype *st, char *mddev,
#endif
/* Ok, no bad inconsistancy, we can try updating etc */
bitmap_done = 0;
+ content->update_private = NULL;
for (tmpdev = devlist; tmpdev; tmpdev=tmpdev->next) if (tmpdev->used == 1) {
char *devname = tmpdev->devname;
struct stat stb;
@@ -717,6 +718,8 @@ int Assemble(struct supertype *st, char *mddev,
}
devcnt++;
}
+ free(content->update_private);
+ content->update_private = NULL;
if (devcnt == 0) {
fprintf(stderr, Name ": no devices found for %s\n",