When scanning for changed containers, don't assume that the controller
will respond in a sane manner. Thanks to Petri Helenius <pete@he.iki.fi> for spotting this and pestering me to fix it.
This commit is contained in:
parent
0fe2538abb
commit
e6cf23b984
@ -306,7 +306,7 @@ aac_startup(void *arg)
|
||||
struct aac_fib *fib;
|
||||
struct aac_mntinfo *mi;
|
||||
struct aac_mntinforesp *mir = NULL;
|
||||
int i = 0;
|
||||
int count = 0, i = 0;
|
||||
|
||||
debug_called(1);
|
||||
|
||||
@ -327,14 +327,16 @@ aac_startup(void *arg)
|
||||
mi->MntCount = i;
|
||||
if (aac_sync_fib(sc, ContainerCommand, 0, fib,
|
||||
sizeof(struct aac_mntinfo))) {
|
||||
debug(2, "error probing container %d", i);
|
||||
printf("error probing container %d", i);
|
||||
continue;
|
||||
}
|
||||
|
||||
mir = (struct aac_mntinforesp *)&fib->data[0];
|
||||
/* XXX Need to check if count changed */
|
||||
count = mir->MntRespCount;
|
||||
aac_add_container(sc, mir, 0);
|
||||
i++;
|
||||
} while ((i < mir->MntRespCount) && (i < AAC_MAX_CONTAINERS));
|
||||
} while ((i < count) && (i < AAC_MAX_CONTAINERS));
|
||||
|
||||
aac_release_sync_fib(sc);
|
||||
|
||||
@ -2565,7 +2567,7 @@ aac_handle_aif(struct aac_softc *sc, struct aac_fib *fib)
|
||||
struct aac_mntinforesp *mir = NULL;
|
||||
u_int16_t rsize;
|
||||
int next, found;
|
||||
int added = 0, i = 0;
|
||||
int count = 0, added = 0, i = 0;
|
||||
|
||||
debug_called(2);
|
||||
|
||||
@ -2600,11 +2602,13 @@ aac_handle_aif(struct aac_softc *sc, struct aac_fib *fib)
|
||||
rsize = sizeof(mir);
|
||||
if (aac_sync_fib(sc, ContainerCommand, 0, fib,
|
||||
sizeof(struct aac_mntinfo))) {
|
||||
debug(2, "Error probing container %d\n",
|
||||
printf("Error probing container %d\n",
|
||||
i);
|
||||
continue;
|
||||
}
|
||||
mir = (struct aac_mntinforesp *)&fib->data[0];
|
||||
/* XXX Need to check if count changed */
|
||||
count = mir->MntRespCount;
|
||||
/*
|
||||
* Check the container against our list.
|
||||
* co->co_found was already set to 0 in a
|
||||
@ -2640,8 +2644,7 @@ aac_handle_aif(struct aac_softc *sc, struct aac_fib *fib)
|
||||
added = 1;
|
||||
}
|
||||
i++;
|
||||
} while ((i < mir->MntRespCount) &&
|
||||
(i < AAC_MAX_CONTAINERS));
|
||||
} while ((i < count) && (i < AAC_MAX_CONTAINERS));
|
||||
aac_release_sync_fib(sc);
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user