Allow --update=name to update the name during assembly.
Signed-off-by: Neil Brown <neilb@suse.de>
This commit is contained in:
parent
e5eac01f3d
commit
c4f12c1340
|
@ -225,7 +225,7 @@ int Assemble(struct supertype *st, char *mddev, int mdfd,
|
|||
devname);
|
||||
continue;
|
||||
}
|
||||
if (ident->name[0] &&
|
||||
if (ident->name[0] && (!update || strcmp(update, "name")!= 0) &&
|
||||
(!super || strncmp(info.name, ident->name, 32)!=0)) {
|
||||
if ((inargv && verbose >= 0) || verbose > 0)
|
||||
fprintf(stderr, Name ": %s has wrong name.\n",
|
||||
|
|
8
mdadm.8
8
mdadm.8
|
@ -650,6 +650,7 @@ argument given to this flag can be one of
|
|||
.BR sparc2.2 ,
|
||||
.BR summaries ,
|
||||
.BR uuid ,
|
||||
.BR name ,
|
||||
.BR resync ,
|
||||
.BR byteorder ,
|
||||
or
|
||||
|
@ -681,6 +682,13 @@ option will change the uuid of the array. If a UUID is given with the
|
|||
be used to help identify the devices in the array.
|
||||
If no "--uuid" is given, a random uuid is chosen.
|
||||
|
||||
The
|
||||
.B name
|
||||
option will change the
|
||||
.I name
|
||||
of the array as stored in the superblock. This is only supported for
|
||||
version-1 superblocks.
|
||||
|
||||
The
|
||||
.B resync
|
||||
option will cause the array to be marked
|
||||
|
|
2
mdadm.c
2
mdadm.c
|
@ -566,6 +566,8 @@ int main(int argc, char *argv[])
|
|||
continue;
|
||||
if (strcmp(update, "uuid")==0)
|
||||
continue;
|
||||
if (strcmp(update, "name")==0)
|
||||
continue;
|
||||
if (strcmp(update, "byteorder")==0) {
|
||||
if (ss) {
|
||||
fprintf(stderr, Name ": must not set metadata type with --update=byteorder.\n");
|
||||
|
|
13
super1.c
13
super1.c
|
@ -496,6 +496,19 @@ static int update_super1(struct mdinfo *info, void *sbv, char *update,
|
|||
memcpy(bm->uuid, info->uuid, 16);
|
||||
}
|
||||
}
|
||||
if (strcmp(update, "name") == 0) {
|
||||
if (info->name[0] == 0)
|
||||
sprintf(info->name, "%d", info->array.md_minor);
|
||||
memset(sb->set_name, 0, sizeof(sb->set_name));
|
||||
if (homehost &&
|
||||
strchr(info->name, ':') == NULL &&
|
||||
strlen(homehost)+1+strlen(info->name) < 32) {
|
||||
strcpy(sb->set_name, homehost);
|
||||
strcat(sb->set_name, ":");
|
||||
strcat(sb->set_name, info->name);
|
||||
} else
|
||||
strcpy(sb->set_name, info->name);
|
||||
}
|
||||
if (strcmp(update, "_reshape_progress")==0)
|
||||
sb->reshape_position = __cpu_to_le64(info->reshape_progress);
|
||||
|
||||
|
|
Loading…
Reference in New Issue