config: restore the possibility of a NULL homehost
As homehost defaults to the system name it is not possible to specify a NULL homehost. This patch restored this ability with either --homehost="" or --homehost="<none>". This allows the creation of v1.x arrays without a "hostname:" prefix in the name. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
815c8a7e0b
commit
0f23aa88f8
9
config.c
9
config.c
|
@ -589,9 +589,12 @@ void homehostline(char *line)
|
|||
for (w=dl_next(line); w != line ; w=dl_next(w)) {
|
||||
if (strcasecmp(w, "<ignore>")==0)
|
||||
require_homehost = 0;
|
||||
else if (home_host == NULL)
|
||||
home_host = strdup(w);
|
||||
else
|
||||
else if (home_host == NULL) {
|
||||
if (strcasecmp(w, "<none>")==0)
|
||||
home_host = strdup("");
|
||||
else
|
||||
home_host = strdup(w);
|
||||
}else
|
||||
fprintf(stderr, Name ": excess host name on HOMEHOST line: %s - ignored\n",
|
||||
w);
|
||||
}
|
||||
|
|
6
mdadm.c
6
mdadm.c
|
@ -1167,12 +1167,16 @@ int main(int argc, char *argv[])
|
|||
|
||||
if (homehost == NULL)
|
||||
homehost = conf_get_homehost(&require_homehost);
|
||||
if (homehost == NULL || strcmp(homehost, "<system>")==0) {
|
||||
if (homehost == NULL || strcasecmp(homehost, "<system>")==0) {
|
||||
if (gethostname(sys_hostname, sizeof(sys_hostname)) == 0) {
|
||||
sys_hostname[sizeof(sys_hostname)-1] = 0;
|
||||
homehost = sys_hostname;
|
||||
}
|
||||
}
|
||||
if (homehost && (!homehost[0] || strcasecmp(homehost, "<none>") == 0)) {
|
||||
homehost = NULL;
|
||||
require_homehost = 0;
|
||||
}
|
||||
|
||||
if ((mode != MISC || devmode != 'E') &&
|
||||
geteuid() != 0) {
|
||||
|
|
11
mdadm.conf.5
11
mdadm.conf.5
|
@ -339,14 +339,15 @@ line gives a default value for the
|
|||
.B \-\-homehost=
|
||||
option to mdadm. There should normally be only one other word on the line.
|
||||
It should either be a host name, or one of the special words
|
||||
.B <system>
|
||||
.BR <system>,
|
||||
.B <none>
|
||||
and
|
||||
.BR <ignore> .
|
||||
If
|
||||
.B <system>
|
||||
is given, then the
|
||||
.BR gethostname ( 2 )
|
||||
systemcall is used to get the host name.
|
||||
systemcall is used to get the host name. This is the default.
|
||||
|
||||
If
|
||||
.B <ignore>
|
||||
|
@ -362,6 +363,12 @@ more that one other word on the
|
|||
.B HOMEHOST
|
||||
line.
|
||||
|
||||
If
|
||||
.B <none>
|
||||
is given, then the default of using
|
||||
.BR gethostname ( 2 )
|
||||
is over-ridden and no homehost name is assumed.
|
||||
|
||||
When arrays are created, this host name will be stored in the
|
||||
metadata. When arrays are assembled using auto-assembly, arrays which
|
||||
do not record the correct homehost name in their metadata will be
|
||||
|
|
2
super0.c
2
super0.c
|
@ -541,7 +541,7 @@ static int update_super0(struct supertype *st, struct mdinfo *info,
|
|||
sb->state &= ~(1<<MD_SB_CLEAN);
|
||||
sb->recovery_cp = 0;
|
||||
} else if (strcmp(update, "homehost") == 0 &&
|
||||
homehost) {
|
||||
homehost) {
|
||||
uuid_set = 0;
|
||||
update = "uuid";
|
||||
info->uuid[0] = sb->set_uuid0;
|
||||
|
|
2
super1.c
2
super1.c
|
@ -772,7 +772,7 @@ static int update_super1(struct supertype *st, struct mdinfo *info,
|
|||
} else if (strcmp(update, "no-bitmap") == 0) {
|
||||
sb->feature_map &= ~__cpu_to_le32(MD_FEATURE_BITMAP_OFFSET);
|
||||
} else if (strcmp(update, "homehost") == 0 &&
|
||||
homehost) {
|
||||
homehost) {
|
||||
char *c;
|
||||
update = "name";
|
||||
c = strchr(sb->set_name, ':');
|
||||
|
|
Loading…
Reference in New Issue