Allow metadata handler to report that it doesn't record homehost.
For now, this means that the lack of a homehost doesn't always prevent assembly. Soon we will allow assembly anyway, but have different messages if homehost isn't supported.
This commit is contained in:
parent
ffcfc735a5
commit
9362c1c80c
|
@ -339,7 +339,8 @@ int Assemble(struct supertype *st, char *mddev, int mdfd,
|
||||||
if (homehost) {
|
if (homehost) {
|
||||||
int first = st->ss->match_home(st, homehost);
|
int first = st->ss->match_home(st, homehost);
|
||||||
int last = tst->ss->match_home(tst, homehost);
|
int last = tst->ss->match_home(tst, homehost);
|
||||||
if (first+last == 1) {
|
if (first != last &&
|
||||||
|
(first == 1 || last == 1)) {
|
||||||
/* We can do something */
|
/* We can do something */
|
||||||
if (first) {/* just ignore this one */
|
if (first) {/* just ignore this one */
|
||||||
if ((inargv && verbose >= 0) || verbose > 0)
|
if ((inargv && verbose >= 0) || verbose > 0)
|
||||||
|
|
|
@ -217,7 +217,7 @@ int Incremental(char *devname, int verbose, int runstop,
|
||||||
/* 3a/ if not, check for homehost match. If no match, reject. */
|
/* 3a/ if not, check for homehost match. If no match, reject. */
|
||||||
if (!match) {
|
if (!match) {
|
||||||
if (homehost == NULL ||
|
if (homehost == NULL ||
|
||||||
st->ss->match_home(st, homehost) == 0) {
|
st->ss->match_home(st, homehost) != 1) {
|
||||||
if (verbose >= 0)
|
if (verbose >= 0)
|
||||||
fprintf(stderr, Name
|
fprintf(stderr, Name
|
||||||
": not found in mdadm.conf and not identified by homehost.\n");
|
": not found in mdadm.conf and not identified by homehost.\n");
|
||||||
|
|
3
mdadm.h
3
mdadm.h
|
@ -446,8 +446,7 @@ extern struct superswitch {
|
||||||
void (*getinfo_super)(struct supertype *st, struct mdinfo *info);
|
void (*getinfo_super)(struct supertype *st, struct mdinfo *info);
|
||||||
|
|
||||||
/* Check if the given metadata is flagged as belonging to "this"
|
/* Check if the given metadata is flagged as belonging to "this"
|
||||||
* host. For arrays that don't determine a minor-number, this
|
* host. 0 for 'no', 1 for 'yes', -1 for "Don't record homehost"
|
||||||
* can always be true (??)
|
|
||||||
*/
|
*/
|
||||||
int (*match_home)(struct supertype *st, char *homehost);
|
int (*match_home)(struct supertype *st, char *homehost);
|
||||||
|
|
||||||
|
|
|
@ -578,7 +578,7 @@ static int match_home_imsm(struct supertype *st, char *homehost)
|
||||||
{
|
{
|
||||||
printf("%s\n", __FUNCTION__);
|
printf("%s\n", __FUNCTION__);
|
||||||
|
|
||||||
return 0;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void uuid_from_super_imsm(struct supertype *st, int uuid[4])
|
static void uuid_from_super_imsm(struct supertype *st, int uuid[4])
|
||||||
|
|
Loading…
Reference in New Issue