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:
scottl 2003-06-03 02:10:55 +00:00
parent 0fe2538abb
commit e6cf23b984

View File

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