Commit 665022d7 authored by Mike Snitzer's avatar Mike Snitzer

dm cache: avoid calls to prealloc_free_structs() if possible

If no work was performed then prealloc_data_structs() wasn't ever called
so there isn't any need to call prealloc_free_structs().
Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
parent e782eff5
...@@ -1946,6 +1946,7 @@ static int commit_if_needed(struct cache *cache) ...@@ -1946,6 +1946,7 @@ static int commit_if_needed(struct cache *cache)
static void process_deferred_bios(struct cache *cache) static void process_deferred_bios(struct cache *cache)
{ {
bool prealloc_used = false;
unsigned long flags; unsigned long flags;
struct bio_list bios; struct bio_list bios;
struct bio *bio; struct bio *bio;
...@@ -1980,13 +1981,16 @@ static void process_deferred_bios(struct cache *cache) ...@@ -1980,13 +1981,16 @@ static void process_deferred_bios(struct cache *cache)
process_discard_bio(cache, &structs, bio); process_discard_bio(cache, &structs, bio);
else else
process_bio(cache, &structs, bio); process_bio(cache, &structs, bio);
prealloc_used = true;
} }
prealloc_free_structs(cache, &structs); if (prealloc_used)
prealloc_free_structs(cache, &structs);
} }
static void process_deferred_cells(struct cache *cache) static void process_deferred_cells(struct cache *cache)
{ {
bool prealloc_used = false;
unsigned long flags; unsigned long flags;
struct dm_bio_prison_cell *cell, *tmp; struct dm_bio_prison_cell *cell, *tmp;
struct list_head cells; struct list_head cells;
...@@ -2014,9 +2018,11 @@ static void process_deferred_cells(struct cache *cache) ...@@ -2014,9 +2018,11 @@ static void process_deferred_cells(struct cache *cache)
} }
process_cell(cache, &structs, cell); process_cell(cache, &structs, cell);
prealloc_used = true;
} }
prealloc_free_structs(cache, &structs); if (prealloc_used)
prealloc_free_structs(cache, &structs);
} }
static void process_deferred_flush_bios(struct cache *cache, bool submit_bios) static void process_deferred_flush_bios(struct cache *cache, bool submit_bios)
...@@ -2061,6 +2067,7 @@ static void process_deferred_writethrough_bios(struct cache *cache) ...@@ -2061,6 +2067,7 @@ static void process_deferred_writethrough_bios(struct cache *cache)
static void writeback_some_dirty_blocks(struct cache *cache) static void writeback_some_dirty_blocks(struct cache *cache)
{ {
bool prealloc_used = false;
dm_oblock_t oblock; dm_oblock_t oblock;
dm_cblock_t cblock; dm_cblock_t cblock;
struct prealloc structs; struct prealloc structs;
...@@ -2080,9 +2087,11 @@ static void writeback_some_dirty_blocks(struct cache *cache) ...@@ -2080,9 +2087,11 @@ static void writeback_some_dirty_blocks(struct cache *cache)
} }
writeback(cache, &structs, oblock, cblock, old_ocell); writeback(cache, &structs, oblock, cblock, old_ocell);
prealloc_used = true;
} }
prealloc_free_structs(cache, &structs); if (prealloc_used)
prealloc_free_structs(cache, &structs);
} }
/*---------------------------------------------------------------- /*----------------------------------------------------------------
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment