From 98b6844690dbc9bba22e8c7c0f810e8567e78b84 Mon Sep 17 00:00:00 2001 From: Kirk McKusick Date: Tue, 18 Feb 2020 23:56:23 +0000 Subject: Additional KASSERTs to ensure the consistency of the soft updates indirdep structure. No functional change. Tested by: Peter Holm (as part of a larger patch) Sponsored by: Netflix --- sys/ufs/ffs/ffs_softdep.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'sys/ufs') 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); -- cgit v1.2.3