diff options
Diffstat (limited to 'sys/ufs/ffs/ffs_softdep.c')
-rw-r--r-- | sys/ufs/ffs/ffs_softdep.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c index 4e6ed2fe8d64..086d3a3df012 100644 --- a/sys/ufs/ffs/ffs_softdep.c +++ b/sys/ufs/ffs/ffs_softdep.c @@ -8224,8 +8224,13 @@ indir_trunc(freework, dbn, lbn) * If we're goingaway, free the indirdep. Otherwise it will * linger until the write completes. */ - if (goingaway) + if (goingaway) { + KASSERT(indirdep->ir_savebp == bp, + ("indir_trunc: losing ir_savebp %p", + indirdep->ir_savebp)); + indirdep->ir_savebp = NULL; free_indirdep(indirdep); + } } FREE_LOCK(ump); /* Initialize pointers depending on block size. */ @@ -10739,6 +10744,8 @@ free_indirdep(indirdep) ("free_indirdep: %p still on newblk list.", indirdep)); KASSERT(indirdep->ir_saveddata == NULL, ("free_indirdep: %p still has saved data.", indirdep)); + KASSERT(indirdep->ir_savebp == NULL, + ("free_indirdep: %p still has savebp buffer.", indirdep)); if (indirdep->ir_state & ONWORKLIST) WORKLIST_REMOVE(&indirdep->ir_list); WORKITEM_FREE(indirdep, D_INDIRDEP); |