Author: markj
Date: Fri Feb  3 01:19:48 2017
New Revision: 313127
URL: https://svnweb.freebsd.org/changeset/base/313127

Log:
  MFC r307693:
  Simplify keg_drain() a bit by using LIST_FOREACH_SAFE.

Modified:
  stable/11/sys/vm/uma_core.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/vm/uma_core.c
==============================================================================
--- stable/11/sys/vm/uma_core.c Fri Feb  3 01:18:47 2017        (r313126)
+++ stable/11/sys/vm/uma_core.c Fri Feb  3 01:19:48 2017        (r313127)
@@ -845,8 +845,7 @@ static void
 keg_drain(uma_keg_t keg)
 {
        struct slabhead freeslabs = { 0 };
-       uma_slab_t slab;
-       uma_slab_t n;
+       uma_slab_t slab, tmp;
 
        /*
         * We don't want to take pages from statically allocated kegs at this
@@ -862,15 +861,10 @@ keg_drain(uma_keg_t keg)
        if (keg->uk_free == 0)
                goto finished;
 
-       slab = LIST_FIRST(&keg->uk_free_slab);
-       while (slab) {
-               n = LIST_NEXT(slab, us_link);
-
-               /* We have no where to free these to */
-               if (slab->us_flags & UMA_SLAB_BOOT) {
-                       slab = n;
+       LIST_FOREACH_SAFE(slab, &keg->uk_free_slab, us_link, tmp) {
+               /* We have nowhere to free these to. */
+               if (slab->us_flags & UMA_SLAB_BOOT)
                        continue;
-               }
 
                LIST_REMOVE(slab, us_link);
                keg->uk_pages -= keg->uk_ppera;
@@ -880,8 +874,6 @@ keg_drain(uma_keg_t keg)
                        UMA_HASH_REMOVE(&keg->uk_hash, slab, slab->us_data);
 
                SLIST_INSERT_HEAD(&freeslabs, slab, us_hlink);
-
-               slab = n;
        }
 finished:
        KEG_UNLOCK(keg);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to