[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen staging-4.18] radix-tree: purge node allocation override hooks



commit 9b7b348f204f8b49cb183bb2e55281b7ca02b782
Author:     Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Mon Feb 17 13:31:22 2025 +0100
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Mon Feb 17 13:31:22 2025 +0100

    radix-tree: purge node allocation override hooks
    
    These were needed by TMEM only, which is long gone. The Linux original
    doesn't have such either. This effectively reverts one of the "Other
    changes" from 8dc6738dbb3c ("Update radix-tree.[ch] from upstream Linux
    to gain RCU awareness").
    
    Positive side effect: Two cf_check go away.
    
    While there also convert xmalloc()+memset() to xzalloc().
    
    Requested-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
    Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    master commit: 1275093a96fed45057db241b3aa6e191d9dcf596
    master date: 2025-02-07 09:59:11 +0100
---
 xen/common/radix-tree.c      | 37 ++++++-------------------------------
 xen/include/xen/radix-tree.h | 10 ----------
 2 files changed, 6 insertions(+), 41 deletions(-)

diff --git a/xen/common/radix-tree.c b/xen/common/radix-tree.c
index adc3034222..994a5a3b3d 100644
--- a/xen/common/radix-tree.c
+++ b/xen/common/radix-tree.c
@@ -52,12 +52,6 @@ struct rcu_node {
        struct rcu_head rcu_head;
 };
 
-static struct radix_tree_node *cf_check rcu_node_alloc(void *arg)
-{
-       struct rcu_node *rcu_node = xmalloc(struct rcu_node);
-       return rcu_node ? &rcu_node->node : NULL;
-}
-
 static void cf_check _rcu_node_free(struct rcu_head *head)
 {
        struct rcu_node *rcu_node =
@@ -65,26 +59,20 @@ static void cf_check _rcu_node_free(struct rcu_head *head)
        xfree(rcu_node);
 }
 
-static void cf_check rcu_node_free(struct radix_tree_node *node, void *arg)
-{
-       struct rcu_node *rcu_node = container_of(node, struct rcu_node, node);
-       call_rcu(&rcu_node->rcu_head, _rcu_node_free);
-}
-
 static struct radix_tree_node *radix_tree_node_alloc(
        struct radix_tree_root *root)
 {
-       struct radix_tree_node *ret;
-       ret = root->node_alloc(root->node_alloc_free_arg);
-       if (ret)
-               memset(ret, 0, sizeof(*ret));
-       return ret;
+       struct rcu_node *rcu_node = xzalloc(struct rcu_node);
+
+       return rcu_node ? &rcu_node->node : NULL;
 }
 
 static void radix_tree_node_free(
        struct radix_tree_root *root, struct radix_tree_node *node)
 {
-       root->node_free(node, root->node_alloc_free_arg);
+       struct rcu_node *rcu_node = container_of(node, struct rcu_node, node);
+
+       call_rcu(&rcu_node->rcu_head, _rcu_node_free);
 }
 
 /*
@@ -717,19 +705,6 @@ void radix_tree_destroy(
 void radix_tree_init(struct radix_tree_root *root)
 {
        memset(root, 0, sizeof(*root));
-       root->node_alloc = rcu_node_alloc;
-       root->node_free = rcu_node_free;
-}
-
-void radix_tree_set_alloc_callbacks(
-       struct radix_tree_root *root,
-       radix_tree_alloc_fn_t *node_alloc,
-       radix_tree_free_fn_t *node_free,
-       void *node_alloc_free_arg)
-{
-       root->node_alloc = node_alloc;
-       root->node_free = node_free;
-       root->node_alloc_free_arg = node_alloc_free_arg;
 }
 
 static __init unsigned long __maxindex(unsigned int height)
diff --git a/xen/include/xen/radix-tree.h b/xen/include/xen/radix-tree.h
index 58c40312e6..9d5ffae3eb 100644
--- a/xen/include/xen/radix-tree.h
+++ b/xen/include/xen/radix-tree.h
@@ -66,11 +66,6 @@ typedef void radix_tree_free_fn_t(struct radix_tree_node *, 
void *);
 struct radix_tree_root {
        unsigned int            height;
        struct radix_tree_node  __rcu *rnode;
-
-       /* Allow to specify custom node alloc/dealloc routines. */
-       radix_tree_alloc_fn_t *node_alloc;
-       radix_tree_free_fn_t *node_free;
-       void *node_alloc_free_arg;
 };
 
 /*
@@ -78,11 +73,6 @@ struct radix_tree_root {
  */
 
 void radix_tree_init(struct radix_tree_root *root);
-void radix_tree_set_alloc_callbacks(
-       struct radix_tree_root *root,
-       radix_tree_alloc_fn_t *node_alloc,
-       radix_tree_free_fn_t *node_free,
-       void *node_alloc_free_arg);
 
 void radix_tree_destroy(
        struct radix_tree_root *root,
--
generated by git-patchbot for /home/xen/git/xen.git#staging-4.18



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.