Skip to content

Commit

Permalink
dm cache: avoid calls to prealloc_free_structs() if possible
Browse files Browse the repository at this point in the history
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: Mike Snitzer <snitzer@redhat.com>
  • Loading branch information
Mike Snitzer committed Jul 17, 2015
1 parent e782eff commit 665022d
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions drivers/md/dm-cache-target.c
Original file line number Diff line number Diff line change
Expand Up @@ -1946,6 +1946,7 @@ static int commit_if_needed(struct cache *cache)

static void process_deferred_bios(struct cache *cache)
{
bool prealloc_used = false;
unsigned long flags;
struct bio_list bios;
struct bio *bio;
Expand Down Expand Up @@ -1980,13 +1981,16 @@ static void process_deferred_bios(struct cache *cache)
process_discard_bio(cache, &structs, bio);
else
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)
{
bool prealloc_used = false;
unsigned long flags;
struct dm_bio_prison_cell *cell, *tmp;
struct list_head cells;
Expand Down Expand Up @@ -2014,9 +2018,11 @@ static void process_deferred_cells(struct cache *cache)
}

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)
Expand Down Expand Up @@ -2061,6 +2067,7 @@ static void process_deferred_writethrough_bios(struct cache *cache)

static void writeback_some_dirty_blocks(struct cache *cache)
{
bool prealloc_used = false;
dm_oblock_t oblock;
dm_cblock_t cblock;
struct prealloc structs;
Expand All @@ -2080,9 +2087,11 @@ static void writeback_some_dirty_blocks(struct cache *cache)
}

writeback(cache, &structs, oblock, cblock, old_ocell);
prealloc_used = true;
}

prealloc_free_structs(cache, &structs);
if (prealloc_used)
prealloc_free_structs(cache, &structs);
}

/*----------------------------------------------------------------
Expand Down

0 comments on commit 665022d

Please sign in to comment.