diff options
author | Dan Williams <dan.j.williams@intel.com> | 2009-10-13 17:41:53 -0700 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-10-13 17:41:53 -0700 |
commit | 6e46bf344bf34a688696e240596f8259e328eea9 (patch) | |
tree | 38563c669312f698e0e39ef048828e20e469f2ad /Assemble.c | |
parent | 955e9ea1394662f097a88bb3d62c56ab50448597 (diff) | |
download | mdadm-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.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -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", |