lkml.org 
[lkml]   [2017]   [Jan]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCHv6 02/37] Revert "radix-tree: implement radix_tree_maybe_preload_order()"
    Date
    This reverts commit 356e1c23292a4f63cfdf1daf0e0ddada51f32de8.

    After conversion of huge tmpfs to multi-order entries, we don't need
    this anymore.

    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    ---
    include/linux/radix-tree.h | 1 -
    lib/radix-tree.c | 74 ----------------------------------------------
    2 files changed, 75 deletions(-)

    diff --git a/include/linux/radix-tree.h b/include/linux/radix-tree.h
    index 52bda854593b..e75b20179eee 100644
    --- a/include/linux/radix-tree.h
    +++ b/include/linux/radix-tree.h
    @@ -322,7 +322,6 @@ unsigned int radix_tree_gang_lookup_slot(struct radix_tree_root *root,
    unsigned long first_index, 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 *root,
    unsigned long index, unsigned int tag);
    diff --git a/lib/radix-tree.c b/lib/radix-tree.c
    index 0b92d605fb69..8d8e3b42ab20 100644
    --- a/lib/radix-tree.c
    +++ b/lib/radix-tree.c
    @@ -38,9 +38,6 @@
    #include <linux/preempt.h> /* in_interrupt() */


    -/* 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.
    */
    @@ -465,51 +462,6 @@ int radix_tree_split_preload(unsigned int old_order, unsigned int new_order,
    }
    #endif

    -/*
    - * 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(struct radix_tree_root *root,
    struct radix_tree_node **nodep, unsigned long *maxindex)
    {
    @@ -1936,31 +1888,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;
    @@ -1984,7 +1911,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);
    --
    2.11.0
    \
     
     \ /
      Last update: 2017-01-26 13:03    [W:4.166 / U:0.120 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site