Author: mckusick
Date: Tue Feb 18 23:56:23 2020
New Revision: 358085
URL: https://svnweb.freebsd.org/changeset/base/358085

Log:
  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

Modified:
  head/sys/ufs/ffs/ffs_softdep.c

Modified: head/sys/ufs/ffs/ffs_softdep.c
==============================================================================
--- head/sys/ufs/ffs/ffs_softdep.c      Tue Feb 18 21:36:54 2020        
(r358084)
+++ head/sys/ufs/ffs/ffs_softdep.c      Tue Feb 18 23:56:23 2020        
(r358085)
@@ -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);
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to