diff options
author | NeilBrown <neilb@suse.de> | 2008-11-04 20:50:38 +1100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2008-11-04 20:50:38 +1100 |
commit | a04d576343fcdc3da6dee3a198a4534daddbe96e (patch) | |
tree | 83f4a5e0b9b7ccd7df8d91647da4f943e0417899 /Assemble.c | |
parent | 9180c81bd7f4f3dd2fb9f2835894d8c0e9488dbd (diff) |
Always update mdadm/map when starting an array.
We previously only updated /var/run/mdadm/map when starting an
array with --incremental. However we now make more use of
that file (to pass the dev name to udev) so always update it.
Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Assemble.c')
-rw-r--r-- | Assemble.c | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -144,6 +144,7 @@ int Assemble(struct supertype *st, char *mddev, int nextspare = 0; char *name; int trustworthy; + char chosen_name[1024]; memset(&info, 0, sizeof(info)); @@ -429,7 +430,8 @@ int Assemble(struct supertype *st, char *mddev, trustworthy = FOREIGN; break; } - mdfd = create_mddev(mddev, name, ident->autof, trustworthy, NULL); + mdfd = create_mddev(mddev, name, ident->autof, trustworthy, + chosen_name); if (mdfd < 0) { st->ss->free_super(st); free(devices); @@ -437,6 +439,7 @@ int Assemble(struct supertype *st, char *mddev, goto try_again; return 1; } + mddev = chosen_name; vers = md_get_version(mdfd); if (vers < 9000) { fprintf(stderr, Name ": Assemble requires driver version 0.90.0 or later.\n" @@ -899,6 +902,12 @@ int Assemble(struct supertype *st, char *mddev, if (!old_linux) { int rv; + /* First, fill in the map, so that udev can find our name + * as soon as we become active. + */ + map_update(NULL, fd2devnum(mdfd), info.text_version, + info.uuid, chosen_name); + rv = set_array_info(mdfd, st, &info); if (rv) { fprintf(stderr, Name ": failed to set array info for %s: %s\n", |