diff options
author | Mike Snitzer <snitzer@redhat.com> | 2015-11-23 16:38:25 -0500 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2015-12-10 10:38:59 -0500 |
commit | ba503835ad92d8b259b7ebbbf812a9fc57567336 (patch) | |
tree | 334c901023c1e28d8ad58b78f1775a3e1d2c0b19 /drivers/md/persistent-data | |
parent | 86a49e2dac3064557d45850a9c63f7cc1e6fe041 (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.c | 17 |
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 | ||
757 | static 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 | |||
757 | static int insert(struct dm_btree_info *info, dm_block_t root, | 764 | static 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 | ||