tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
what is this KASSERT() testing?
hi.
my devbox just crashed with this:
panic: kernel diagnostic assertion "pg == NULL || pg == PGO_DONTCARE" failed:
file "/usr/src/sys/miscfs/genfs/genfs_io.c", line 243
but i don't understand the KASSERT(). it seems that this sequence
of events will always trigger:
nfound = uvn_findpages(uobj, origoffset, &npages,
ap->a_m, UFP_NOWAIT|UFP_NOALLOC|(memwrite ? UFP_NORDONLY :
0));
...
if (!genfs_node_rdtrylock(vp)) {
...
for (i = 0; i < npages; i++) {
pg = ap->a_m[i];
if (pg != NULL && pg != PGO_DONTCARE) {
ap->a_m[i] = NULL;
}
KASSERT(pg == NULL || pg == PGO_DONTCARE);
won't all pages filled in by the uvn_findpages() be not NULL, so
if the uvn_findpages() succeeds but the genfs_node_rdtrylock()
fails, we will trigger this assert always.
i think it should just be removed.
.mrg.
Home |
Main Index |
Thread Index |
Old Index