Allow --update=name to update the name during assembly.

Signed-off-by: Neil Brown <neilb@suse.de>
This commit is contained in:
Neil Brown 2006-05-23 04:57:04 +00:00
parent e5eac01f3d
commit c4f12c1340
4 changed files with 24 additions and 1 deletions

View File

@ -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",

View File

@ -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

View File

@ -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");

View File

@ -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);