radix-tree: Chain preallocated nodes through ->parent
Chaining through the ->private_data member means we have to zero ->private_data after removing preallocated nodes from the list. We're about to initialise ->parent anyway, so we can avoid zeroing it. Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>
This commit is contained in:
@@ -35,9 +35,9 @@ void *kmem_cache_alloc(struct kmem_cache *cachep, int flags)
|
||||
if (cachep->nr_objs) {
|
||||
cachep->nr_objs--;
|
||||
node = cachep->objs;
|
||||
cachep->objs = node->private_data;
|
||||
cachep->objs = node->parent;
|
||||
pthread_mutex_unlock(&cachep->lock);
|
||||
node->private_data = NULL;
|
||||
node->parent = NULL;
|
||||
} else {
|
||||
pthread_mutex_unlock(&cachep->lock);
|
||||
node = malloc(cachep->size);
|
||||
@@ -64,7 +64,7 @@ void kmem_cache_free(struct kmem_cache *cachep, void *objp)
|
||||
} else {
|
||||
struct radix_tree_node *node = objp;
|
||||
cachep->nr_objs++;
|
||||
node->private_data = cachep->objs;
|
||||
node->parent = cachep->objs;
|
||||
cachep->objs = node;
|
||||
}
|
||||
pthread_mutex_unlock(&cachep->lock);
|
||||
|
Reference in New Issue
Block a user