mm/slub: simplify the last resort slab order calculation
authorVlastimil Babka <vbabka@suse.cz>
Fri, 8 Sep 2023 07:57:13 +0000 (09:57 +0200)
committerVlastimil Babka <vbabka@suse.cz>
Mon, 2 Oct 2023 09:54:32 +0000 (11:54 +0200)
If calculate_order() can't fit even a single large object within
slub_max_order, it will try using the smallest necessary order that may
exceed slub_max_order but not MAX_ORDER.

Currently this is done with a call to calc_slab_order() which is
unnecessary. We can simply use get_order(size). No functional change.

Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Reviewed-by: Feng Tang <feng.tang@intel.com>
Reviewed-and-tested-by: Jay Patel <jaypatel@linux.ibm.com>
mm/slub.c

index b36e5eb0ccb7268f3d2859d70c9632b537e8d80c..0710adb5642ac766abbc93cd333d8c982ba2a1b4 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -4193,7 +4193,7 @@ static inline int calculate_order(unsigned int size)
        /*
         * Doh this slab cannot be placed using slub_max_order.
         */
-       order = calc_slab_order(size, 1, MAX_ORDER, 1);
+       order = get_order(size);
        if (order <= MAX_ORDER)
                return order;
        return -ENOSYS;