diff options
Diffstat (limited to 'lib/btree.c')
| -rw-r--r-- | lib/btree.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/btree.c b/lib/btree.c index c9c6f035152..4264871ea1a 100644 --- a/lib/btree.c +++ b/lib/btree.c @@ -11,7 +11,7 @@   * see http://programming.kicks-ass.net/kernel-patches/vma_lookup/btree.patch   *   * A relatively simple B+Tree implementation.  I have written it as a learning - * excercise to understand how B+Trees work.  Turned out to be useful as well. + * exercise to understand how B+Trees work.  Turned out to be useful as well.   *   * B+Trees can be used similar to Linux radix trees (which don't have anything   * in common with textbook radix trees, beware).  Prerequisite for them working @@ -198,6 +198,7 @@ EXPORT_SYMBOL_GPL(btree_init);  void btree_destroy(struct btree_head *head)  { +	mempool_free(head->node, head->mempool);  	mempool_destroy(head->mempool);  	head->mempool = NULL;  } @@ -319,8 +320,8 @@ void *btree_get_prev(struct btree_head *head, struct btree_geo *geo,  	if (head->height == 0)  		return NULL; -retry:  	longcpy(key, __key, geo->keylen); +retry:  	dec_key(geo, key);  	node = head->node; @@ -351,12 +352,13 @@ retry:  	}  miss:  	if (retry_key) { -		__key = retry_key; +		longcpy(key, retry_key, geo->keylen);  		retry_key = NULL;  		goto retry;  	}  	return NULL;  } +EXPORT_SYMBOL_GPL(btree_get_prev);  static int getpos(struct btree_geo *geo, unsigned long *node,  		unsigned long *key) @@ -508,6 +510,7 @@ retry:  int btree_insert(struct btree_head *head, struct btree_geo *geo,  		unsigned long *key, void *val, gfp_t gfp)  { +	BUG_ON(!val);  	return btree_insert_level(head, geo, key, val, 1, gfp);  }  EXPORT_SYMBOL_GPL(btree_insert); @@ -541,7 +544,7 @@ static void rebalance(struct btree_head *head, struct btree_geo *geo,  	int i, no_left, no_right;  	if (fill == 0) { -		/* Because we don't steal entries from a neigbour, this case +		/* Because we don't steal entries from a neighbour, this case  		 * can happen.  Parent node contains a single child, this  		 * node, so merging with a sibling never happens.  		 */  | 
