diff options
Diffstat (limited to 'drivers/md/persistent-data/dm-btree.c')
-rw-r--r-- | drivers/md/persistent-data/dm-btree.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/md/persistent-data/dm-btree.c b/drivers/md/persistent-data/dm-btree.c index bd1e7ffbe26c..d12b2cc51f1a 100644 --- a/drivers/md/persistent-data/dm-btree.c +++ b/drivers/md/persistent-data/dm-btree.c | |||
@@ -74,8 +74,7 @@ void inc_children(struct dm_transaction_manager *tm, struct node *n, | |||
74 | dm_tm_inc(tm, value64(n, i)); | 74 | dm_tm_inc(tm, value64(n, i)); |
75 | else if (vt->inc) | 75 | else if (vt->inc) |
76 | for (i = 0; i < nr_entries; i++) | 76 | for (i = 0; i < nr_entries; i++) |
77 | vt->inc(vt->context, | 77 | vt->inc(vt->context, value_ptr(n, i)); |
78 | value_ptr(n, i, vt->size)); | ||
79 | } | 78 | } |
80 | 79 | ||
81 | static int insert_at(size_t value_size, struct node *node, unsigned index, | 80 | static int insert_at(size_t value_size, struct node *node, unsigned index, |
@@ -281,7 +280,7 @@ int dm_btree_del(struct dm_btree_info *info, dm_block_t root) | |||
281 | 280 | ||
282 | for (i = 0; i < f->nr_children; i++) | 281 | for (i = 0; i < f->nr_children; i++) |
283 | info->value_type.dec(info->value_type.context, | 282 | info->value_type.dec(info->value_type.context, |
284 | value_ptr(f->n, i, info->value_type.size)); | 283 | value_ptr(f->n, i)); |
285 | } | 284 | } |
286 | f->current_child = f->nr_children; | 285 | f->current_child = f->nr_children; |
287 | } | 286 | } |
@@ -320,7 +319,7 @@ static int btree_lookup_raw(struct ro_spine *s, dm_block_t block, uint64_t key, | |||
320 | } while (!(flags & LEAF_NODE)); | 319 | } while (!(flags & LEAF_NODE)); |
321 | 320 | ||
322 | *result_key = le64_to_cpu(ro_node(s)->keys[i]); | 321 | *result_key = le64_to_cpu(ro_node(s)->keys[i]); |
323 | memcpy(v, value_ptr(ro_node(s), i, value_size), value_size); | 322 | memcpy(v, value_ptr(ro_node(s), i), value_size); |
324 | 323 | ||
325 | return 0; | 324 | return 0; |
326 | } | 325 | } |
@@ -432,7 +431,7 @@ static int btree_split_sibling(struct shadow_spine *s, dm_block_t root, | |||
432 | 431 | ||
433 | size = le32_to_cpu(ln->header.flags) & INTERNAL_NODE ? | 432 | size = le32_to_cpu(ln->header.flags) & INTERNAL_NODE ? |
434 | sizeof(uint64_t) : s->info->value_type.size; | 433 | sizeof(uint64_t) : s->info->value_type.size; |
435 | memcpy(value_ptr(rn, 0, size), value_ptr(ln, nr_left, size), | 434 | memcpy(value_ptr(rn, 0), value_ptr(ln, nr_left), |
436 | size * nr_right); | 435 | size * nr_right); |
437 | 436 | ||
438 | /* | 437 | /* |
@@ -443,7 +442,7 @@ static int btree_split_sibling(struct shadow_spine *s, dm_block_t root, | |||
443 | pn = dm_block_data(parent); | 442 | pn = dm_block_data(parent); |
444 | location = cpu_to_le64(dm_block_location(left)); | 443 | location = cpu_to_le64(dm_block_location(left)); |
445 | __dm_bless_for_disk(&location); | 444 | __dm_bless_for_disk(&location); |
446 | memcpy_disk(value_ptr(pn, parent_index, sizeof(__le64)), | 445 | memcpy_disk(value_ptr(pn, parent_index), |
447 | &location, sizeof(__le64)); | 446 | &location, sizeof(__le64)); |
448 | 447 | ||
449 | location = cpu_to_le64(dm_block_location(right)); | 448 | location = cpu_to_le64(dm_block_location(right)); |
@@ -529,8 +528,8 @@ static int btree_split_beneath(struct shadow_spine *s, uint64_t key) | |||
529 | 528 | ||
530 | size = le32_to_cpu(pn->header.flags) & INTERNAL_NODE ? | 529 | size = le32_to_cpu(pn->header.flags) & INTERNAL_NODE ? |
531 | sizeof(__le64) : s->info->value_type.size; | 530 | sizeof(__le64) : s->info->value_type.size; |
532 | memcpy(value_ptr(ln, 0, size), value_ptr(pn, 0, size), nr_left * size); | 531 | memcpy(value_ptr(ln, 0), value_ptr(pn, 0), nr_left * size); |
533 | memcpy(value_ptr(rn, 0, size), value_ptr(pn, nr_left, size), | 532 | memcpy(value_ptr(rn, 0), value_ptr(pn, nr_left), |
534 | nr_right * size); | 533 | nr_right * size); |
535 | 534 | ||
536 | /* new_parent should just point to l and r now */ | 535 | /* new_parent should just point to l and r now */ |
@@ -545,12 +544,12 @@ static int btree_split_beneath(struct shadow_spine *s, uint64_t key) | |||
545 | val = cpu_to_le64(dm_block_location(left)); | 544 | val = cpu_to_le64(dm_block_location(left)); |
546 | __dm_bless_for_disk(&val); | 545 | __dm_bless_for_disk(&val); |
547 | pn->keys[0] = ln->keys[0]; | 546 | pn->keys[0] = ln->keys[0]; |
548 | memcpy_disk(value_ptr(pn, 0, sizeof(__le64)), &val, sizeof(__le64)); | 547 | memcpy_disk(value_ptr(pn, 0), &val, sizeof(__le64)); |
549 | 548 | ||
550 | val = cpu_to_le64(dm_block_location(right)); | 549 | val = cpu_to_le64(dm_block_location(right)); |
551 | __dm_bless_for_disk(&val); | 550 | __dm_bless_for_disk(&val); |
552 | pn->keys[1] = rn->keys[0]; | 551 | pn->keys[1] = rn->keys[0]; |
553 | memcpy_disk(value_ptr(pn, 1, sizeof(__le64)), &val, sizeof(__le64)); | 552 | memcpy_disk(value_ptr(pn, 1), &val, sizeof(__le64)); |
554 | 553 | ||
555 | /* | 554 | /* |
556 | * rejig the spine. This is ugly, since it knows too | 555 | * rejig the spine. This is ugly, since it knows too |
@@ -595,7 +594,7 @@ static int btree_insert_raw(struct shadow_spine *s, dm_block_t root, | |||
595 | __le64 location = cpu_to_le64(dm_block_location(shadow_current(s))); | 594 | __le64 location = cpu_to_le64(dm_block_location(shadow_current(s))); |
596 | 595 | ||
597 | __dm_bless_for_disk(&location); | 596 | __dm_bless_for_disk(&location); |
598 | memcpy_disk(value_ptr(dm_block_data(shadow_parent(s)), i, sizeof(uint64_t)), | 597 | memcpy_disk(value_ptr(dm_block_data(shadow_parent(s)), i), |
599 | &location, sizeof(__le64)); | 598 | &location, sizeof(__le64)); |
600 | } | 599 | } |
601 | 600 | ||
@@ -710,12 +709,12 @@ static int insert(struct dm_btree_info *info, dm_block_t root, | |||
710 | (!info->value_type.equal || | 709 | (!info->value_type.equal || |
711 | !info->value_type.equal( | 710 | !info->value_type.equal( |
712 | info->value_type.context, | 711 | info->value_type.context, |
713 | value_ptr(n, index, info->value_type.size), | 712 | value_ptr(n, index), |
714 | value))) { | 713 | value))) { |
715 | info->value_type.dec(info->value_type.context, | 714 | info->value_type.dec(info->value_type.context, |
716 | value_ptr(n, index, info->value_type.size)); | 715 | value_ptr(n, index)); |
717 | } | 716 | } |
718 | memcpy_disk(value_ptr(n, index, info->value_type.size), | 717 | memcpy_disk(value_ptr(n, index), |
719 | value, info->value_type.size); | 718 | value, info->value_type.size); |
720 | } | 719 | } |
721 | 720 | ||