aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/persistent-data
diff options
context:
space:
mode:
authorMike Snitzer <snitzer@redhat.com>2015-11-23 16:38:25 -0500
committerMike Snitzer <snitzer@redhat.com>2015-12-10 10:38:59 -0500
commitba503835ad92d8b259b7ebbbf812a9fc57567336 (patch)
tree334c901023c1e28d8ad58b78f1775a3e1d2c0b19 /drivers/md/persistent-data
parent86a49e2dac3064557d45850a9c63f7cc1e6fe041 (diff)
dm btree: factor out need_insert() helper
Eliminates code duplication within insert(). Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/persistent-data')
-rw-r--r--drivers/md/persistent-data/dm-btree.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/md/persistent-data/dm-btree.c b/drivers/md/persistent-data/dm-btree.c
index b1ced58eb5e1..ea3d3b656fd0 100644
--- a/drivers/md/persistent-data/dm-btree.c
+++ b/drivers/md/persistent-data/dm-btree.c
@@ -754,12 +754,19 @@ static int btree_insert_raw(struct shadow_spine *s, dm_block_t root,
754 return 0; 754 return 0;
755} 755}
756 756
757static bool need_insert(struct btree_node *node, uint64_t *keys,
758 unsigned level, unsigned index)
759{
760 return ((index >= le32_to_cpu(node->header.nr_entries)) ||
761 (le64_to_cpu(node->keys[index]) != keys[level]));
762}
763
757static int insert(struct dm_btree_info *info, dm_block_t root, 764static int insert(struct dm_btree_info *info, dm_block_t root,
758 uint64_t *keys, void *value, dm_block_t *new_root, 765 uint64_t *keys, void *value, dm_block_t *new_root,
759 int *inserted) 766 int *inserted)
760 __dm_written_to_disk(value) 767 __dm_written_to_disk(value)
761{ 768{
762 int r, need_insert; 769 int r;
763 unsigned level, index = -1, last_level = info->levels - 1; 770 unsigned level, index = -1, last_level = info->levels - 1;
764 dm_block_t block = root; 771 dm_block_t block = root;
765 struct shadow_spine spine; 772 struct shadow_spine spine;
@@ -775,10 +782,8 @@ static int insert(struct dm_btree_info *info, dm_block_t root,
775 goto bad; 782 goto bad;
776 783
777 n = dm_block_data(shadow_current(&spine)); 784 n = dm_block_data(shadow_current(&spine));
778 need_insert = ((index >= le32_to_cpu(n->header.nr_entries)) ||
779 (le64_to_cpu(n->keys[index]) != keys[level]));
780 785
781 if (need_insert) { 786 if (need_insert(n, keys, level, index)) {
782 dm_block_t new_tree; 787 dm_block_t new_tree;
783 __le64 new_le; 788 __le64 new_le;
784 789
@@ -805,10 +810,8 @@ static int insert(struct dm_btree_info *info, dm_block_t root,
805 goto bad; 810 goto bad;
806 811
807 n = dm_block_data(shadow_current(&spine)); 812 n = dm_block_data(shadow_current(&spine));
808 need_insert = ((index >= le32_to_cpu(n->header.nr_entries)) ||
809 (le64_to_cpu(n->keys[index]) != keys[level]));
810 813
811 if (need_insert) { 814 if (need_insert(n, keys, level, index)) {
812 if (inserted) 815 if (inserted)
813 *inserted = 1; 816 *inserted = 1;
814 817