dm btree: factor out need_insert() helper
Eliminates code duplication within insert(). Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
parent
86a49e2dac
commit
ba503835ad
1 changed files with 10 additions and 7 deletions
|
@ -754,12 +754,19 @@ static int btree_insert_raw(struct shadow_spine *s, dm_block_t root,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool need_insert(struct btree_node *node, uint64_t *keys,
|
||||||
|
unsigned level, unsigned index)
|
||||||
|
{
|
||||||
|
return ((index >= le32_to_cpu(node->header.nr_entries)) ||
|
||||||
|
(le64_to_cpu(node->keys[index]) != keys[level]));
|
||||||
|
}
|
||||||
|
|
||||||
static int insert(struct dm_btree_info *info, dm_block_t root,
|
static int insert(struct dm_btree_info *info, dm_block_t root,
|
||||||
uint64_t *keys, void *value, dm_block_t *new_root,
|
uint64_t *keys, void *value, dm_block_t *new_root,
|
||||||
int *inserted)
|
int *inserted)
|
||||||
__dm_written_to_disk(value)
|
__dm_written_to_disk(value)
|
||||||
{
|
{
|
||||||
int r, need_insert;
|
int r;
|
||||||
unsigned level, index = -1, last_level = info->levels - 1;
|
unsigned level, index = -1, last_level = info->levels - 1;
|
||||||
dm_block_t block = root;
|
dm_block_t block = root;
|
||||||
struct shadow_spine spine;
|
struct shadow_spine spine;
|
||||||
|
@ -775,10 +782,8 @@ static int insert(struct dm_btree_info *info, dm_block_t root,
|
||||||
goto bad;
|
goto bad;
|
||||||
|
|
||||||
n = dm_block_data(shadow_current(&spine));
|
n = dm_block_data(shadow_current(&spine));
|
||||||
need_insert = ((index >= le32_to_cpu(n->header.nr_entries)) ||
|
|
||||||
(le64_to_cpu(n->keys[index]) != keys[level]));
|
|
||||||
|
|
||||||
if (need_insert) {
|
if (need_insert(n, keys, level, index)) {
|
||||||
dm_block_t new_tree;
|
dm_block_t new_tree;
|
||||||
__le64 new_le;
|
__le64 new_le;
|
||||||
|
|
||||||
|
@ -805,10 +810,8 @@ static int insert(struct dm_btree_info *info, dm_block_t root,
|
||||||
goto bad;
|
goto bad;
|
||||||
|
|
||||||
n = dm_block_data(shadow_current(&spine));
|
n = dm_block_data(shadow_current(&spine));
|
||||||
need_insert = ((index >= le32_to_cpu(n->header.nr_entries)) ||
|
|
||||||
(le64_to_cpu(n->keys[index]) != keys[level]));
|
|
||||||
|
|
||||||
if (need_insert) {
|
if (need_insert(n, keys, level, index)) {
|
||||||
if (inserted)
|
if (inserted)
|
||||||
*inserted = 1;
|
*inserted = 1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue