Skip to content

Commit

Permalink
dm writecache: avoid unnecessary lookups in writecache_find_entry()
Browse files Browse the repository at this point in the history
This is a small optimization in writecache_find_entry().

If we go past the condition "if (unlikely(!node))", we can be certain that
there is no entry in the tree that has the block equal to the "block"
variable.

Consequently, we can return the next entry directly, we don't need to go
to the second part of the function that finds the entry with lowest or
highest seq number that matches the "block" variable.

Also, add some whitespace and cleanup needless braces.

Suggested-by: Huaisheng Ye <[email protected]>
Signed-off-by: Mikulas Patocka <[email protected]>
Signed-off-by: Mike Snitzer <[email protected]>
  • Loading branch information
Mikulas Patocka authored and snitm committed Apr 26, 2019
1 parent 08a8e80 commit f8011d3
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions drivers/md/dm-writecache.c
Original file line number Diff line number Diff line change
Expand Up @@ -545,21 +545,20 @@ static struct wc_entry *writecache_find_entry(struct dm_writecache *wc,
e = container_of(node, struct wc_entry, rb_node);
if (read_original_sector(wc, e) == block)
break;

node = (read_original_sector(wc, e) >= block ?
e->rb_node.rb_left : e->rb_node.rb_right);
if (unlikely(!node)) {
if (!(flags & WFE_RETURN_FOLLOWING)) {
if (!(flags & WFE_RETURN_FOLLOWING))
return NULL;
}
if (read_original_sector(wc, e) >= block) {
break;
return e;
} else {
node = rb_next(&e->rb_node);
if (unlikely(!node)) {
if (unlikely(!node))
return NULL;
}
e = container_of(node, struct wc_entry, rb_node);
break;
return e;
}
}
}
Expand Down

0 comments on commit f8011d3

Please sign in to comment.