radix tree: Remove radix_tree_maybe_preload_order
authorMatthew Wilcox <willy@infradead.org>
Sat, 19 May 2018 20:47:47 +0000 (16:47 -0400)
committerMatthew Wilcox <willy@infradead.org>
Sun, 21 Oct 2018 14:46:45 +0000 (10:46 -0400)
This function was only used by the page cache which is now converted
to the XArray.

Signed-off-by: Matthew Wilcox <willy@infradead.org>
include/linux/radix-tree.h
lib/radix-tree.c

index 44f9abdcb5abc7c98a472e0ddaf14cbaf2b9a07b..664d50c5c2ffb352c7285a0b3af825adbadf3b4c 100644 (file)
@@ -259,7 +259,6 @@ unsigned int radix_tree_gang_lookup(const struct radix_tree_root *,
                        unsigned int max_items);
 int radix_tree_preload(gfp_t gfp_mask);
 int radix_tree_maybe_preload(gfp_t gfp_mask);
-int radix_tree_maybe_preload_order(gfp_t gfp_mask, int order);
 void radix_tree_init(void);
 void *radix_tree_tag_set(struct radix_tree_root *,
                        unsigned long index, unsigned int tag);
index c52e0bef5264fd9d925e3e4e4f7c448f807c041d..b57ddc3dbbbd1acd185c9d409a2bd8d36777be7f 100644 (file)
@@ -41,9 +41,6 @@
 #include <linux/xarray.h>
 
 
-/* Number of nodes in fully populated tree of given height */
-static unsigned long height_to_maxnodes[RADIX_TREE_MAX_PATH + 1] __read_mostly;
-
 /*
  * Radix tree node cache.
  */
@@ -415,51 +412,6 @@ int radix_tree_maybe_preload(gfp_t gfp_mask)
 }
 EXPORT_SYMBOL(radix_tree_maybe_preload);
 
-/*
- * The same as function above, but preload number of nodes required to insert
- * (1 << order) continuous naturally-aligned elements.
- */
-int radix_tree_maybe_preload_order(gfp_t gfp_mask, int order)
-{
-       unsigned long nr_subtrees;
-       int nr_nodes, subtree_height;
-
-       /* Preloading doesn't help anything with this gfp mask, skip it */
-       if (!gfpflags_allow_blocking(gfp_mask)) {
-               preempt_disable();
-               return 0;
-       }
-
-       /*
-        * Calculate number and height of fully populated subtrees it takes to
-        * store (1 << order) elements.
-        */
-       nr_subtrees = 1 << order;
-       for (subtree_height = 0; nr_subtrees > RADIX_TREE_MAP_SIZE;
-                       subtree_height++)
-               nr_subtrees >>= RADIX_TREE_MAP_SHIFT;
-
-       /*
-        * The worst case is zero height tree with a single item at index 0 and
-        * then inserting items starting at ULONG_MAX - (1 << order).
-        *
-        * This requires RADIX_TREE_MAX_PATH nodes to build branch from root to
-        * 0-index item.
-        */
-       nr_nodes = RADIX_TREE_MAX_PATH;
-
-       /* Plus branch to fully populated subtrees. */
-       nr_nodes += RADIX_TREE_MAX_PATH - subtree_height;
-
-       /* Root node is shared. */
-       nr_nodes--;
-
-       /* Plus nodes required to build subtrees. */
-       nr_nodes += nr_subtrees * height_to_maxnodes[subtree_height];
-
-       return __radix_tree_preload(gfp_mask, nr_nodes);
-}
-
 static unsigned radix_tree_load_root(const struct radix_tree_root *root,
                struct radix_tree_node **nodep, unsigned long *maxindex)
 {
@@ -1859,31 +1811,6 @@ radix_tree_node_ctor(void *arg)
        INIT_LIST_HEAD(&node->private_list);
 }
 
-static __init unsigned long __maxindex(unsigned int height)
-{
-       unsigned int width = height * RADIX_TREE_MAP_SHIFT;
-       int shift = RADIX_TREE_INDEX_BITS - width;
-
-       if (shift < 0)
-               return ~0UL;
-       if (shift >= BITS_PER_LONG)
-               return 0UL;
-       return ~0UL >> shift;
-}
-
-static __init void radix_tree_init_maxnodes(void)
-{
-       unsigned long height_to_maxindex[RADIX_TREE_MAX_PATH + 1];
-       unsigned int i, j;
-
-       for (i = 0; i < ARRAY_SIZE(height_to_maxindex); i++)
-               height_to_maxindex[i] = __maxindex(i);
-       for (i = 0; i < ARRAY_SIZE(height_to_maxnodes); i++) {
-               for (j = i; j > 0; j--)
-                       height_to_maxnodes[i] += height_to_maxindex[j - 1] + 1;
-       }
-}
-
 static int radix_tree_cpu_dead(unsigned int cpu)
 {
        struct radix_tree_preload *rtp;
@@ -1911,7 +1838,6 @@ void __init radix_tree_init(void)
                        sizeof(struct radix_tree_node), 0,
                        SLAB_PANIC | SLAB_RECLAIM_ACCOUNT,
                        radix_tree_node_ctor);
-       radix_tree_init_maxnodes();
        ret = cpuhp_setup_state_nocalls(CPUHP_RADIX_DEAD, "lib/radix:dead",
                                        NULL, radix_tree_cpu_dead);
        WARN_ON(ret < 0);