summaryrefslogtreecommitdiff
path: root/Assemble.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2013-05-23 14:41:29 +1000
committerNeilBrown <neilb@suse.de>2013-05-28 16:44:22 +1000
commitafa368f49ac0a12185f243eeedfa8242f2c7a036 (patch)
tree996475ef499a520f83997ebfc520069909b01cf2 /Assemble.c
parentd6e4b44fdbd489e5e8ff1bbcaf17315131182ca3 (diff)
Assemble: --update=metadata converts v0.90 to v1.0
This allows the smooth conversion of legacy 0.90 arrays to 1.0 metadata. Old metadata is likely to remain but will be ignored. It can be removed with mdadm --zero-superblock --metadata=0.90 /dev/whatever Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Assemble.c')
-rw-r--r--Assemble.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/Assemble.c b/Assemble.c
index ab7e249e..7e8cdb4d 100644
--- a/Assemble.c
+++ b/Assemble.c
@@ -622,9 +622,10 @@ static int load_devices(struct devs *devices, char *devmap,
ident->uuid_set,
c->homehost);
if (err < 0) {
- pr_err("--update=%s not understood"
- " for %s metadata\n",
- c->update, tst->ss->name);
+ if (err == -1)
+ pr_err("--update=%s not understood"
+ " for %s metadata\n",
+ c->update, tst->ss->name);
tst->ss->free_super(tst);
free(tst);
close(mdfd);
@@ -1665,6 +1666,12 @@ try_again:
/* First, fill in the map, so that udev can find our name
* as soon as we become active.
*/
+ if (c->update && strcmp(c->update, "metadata")==0) {
+ content->array.major_version = 1;
+ content->array.minor_version = 0;
+ strcpy(content->text_version, "1.0");
+ }
+
map_update(&map, fd2devnm(mdfd), content->text_version,
content->uuid, chosen_name);