/*
* mdadm - manage Linux "md" devices aka RAID arrays.
*
- * Copyright (C) 2001-2002 Neil Brown <neilb@cse.unsw.edu.au>
+ * Copyright (C) 2001-2006 Neil Brown <neilb@suse.de>
*
*
* This program is free software; you can redistribute it and/or modify
*/
int autof = 0;
+ char *homehost = NULL;
+ char sys_hostname[256];
char *mailaddr = NULL;
char *program = NULL;
int delay = 0;
}
continue;
+ case HomeHost:
+ homehost = optarg;
+ continue;
+
case ':':
case '?':
fputs(Usage, stderr);
}
continue;
- case O(CREATE,3):
- case O(BUILD,3): /* assume clean */
+ case O(CREATE,AssumeClean):
+ case O(BUILD,AssumeClean): /* assume clean */
assume_clean = 1;
continue;
fprintf(stderr, Name ": '--update %s' invalid. Only 'sparc2.2', 'super-minor', 'uuid', 'resync' or 'summaries' supported\n",update);
exit(2);
+ case O(ASSEMBLE,NoDegraded): /* --no-degraded */
+ runstop = -1; /* --stop isn't allowed for --assemble, so we overload slightly */
+ continue;
+
case O(ASSEMBLE,'c'): /* config file */
case O(MISC, 'c'):
case O(MONITOR,'c'):
devmode = 'a';
re_add = 0;
continue;
- case O(MANAGE,6):
+ case O(MANAGE,ReAdd):
devmode = 'a';
re_add = 1;
continue;
test = 1;
continue;
- case O(MISC, 22):
+ case O(MISC, Sparc22):
if (devmode != 'E') {
fprintf(stderr, Name ": --sparc2.2 only allowed with --examine\n");
exit(2);
ident.bitmap_fd = bitmap_fd; /* for Assemble */
continue;
- case O(ASSEMBLE, 7):
- case O(GROW, 7):
+ case O(ASSEMBLE, BackupFile):
+ case O(GROW, BackupFile):
/* Specify a file into which grow might place a backup,
* or from which assemble might recover a backup
*/
fprintf(stderr, Name ": bitmap file must contain a '/', or be 'internal', or 'none'\n");
exit(2);
- case O(GROW,4):
- case O(BUILD,4):
- case O(CREATE,4): /* bitmap chunksize */
+ case O(GROW,BitmapChunk):
+ case O(BUILD,BitmapChunk):
+ case O(CREATE,BitmapChunk): /* bitmap chunksize */
bitmap_chunk = strtol(optarg, &c, 10);
if (!optarg[0] || *c || bitmap_chunk < 0 ||
bitmap_chunk & (bitmap_chunk - 1)) {
bitmap_chunk = bitmap_chunk ? bitmap_chunk * 1024 : 512;
continue;
- case O(BUILD, 5):
- case O(CREATE, 5): /* write-behind mode */
+ case O(BUILD, WriteBehind):
+ case O(CREATE, WriteBehind): /* write-behind mode */
write_behind = DEFAULT_MAX_WRITE_BEHIND;
if (optarg) {
write_behind = strtol(optarg, &c, 10);
}
}
+ if (homehost == NULL)
+ homehost = conf_get_homehost(configfile);
+ if (homehost && strcmp(homehost, "<system>")==0) {
+ if (gethostname(sys_hostname, sizeof(sys_hostname)) == 0) {
+ sys_hostname[sizeof(sys_hostname)-1] = 0;
+ homehost = sys_hostname;
+ }
+ }
+
rv = 0;
switch(mode) {
case MANAGE:
}
rv = Create(ss, devlist->devname, mdfd, chunk, level, layout, size<0 ? 0 : size,
- raiddisks, sparedisks, ident.name,
+ raiddisks, sparedisks, ident.name, homehost,
devs_found-1, devlist->next, runstop, verbose-quiet, force, assume_clean,
bitmap_file, bitmap_chunk, write_behind, delay);
break;