diff options
author | NeilBrown <neilb@suse.de> | 2013-05-23 14:41:29 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2013-05-28 16:44:22 +1000 |
commit | afa368f49ac0a12185f243eeedfa8242f2c7a036 (patch) | |
tree | 996475ef499a520f83997ebfc520069909b01cf2 /Assemble.c | |
parent | d6e4b44fdbd489e5e8ff1bbcaf17315131182ca3 (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.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -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); |