Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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;
	}

	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;
@@ -2014,8 +2018,10 @@ static void process_deferred_cells(struct cache *cache)
		}

		process_cell(cache, &structs, cell);
		prealloc_used = true;
	}

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

@@ -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;
@@ -2080,8 +2087,10 @@ static void writeback_some_dirty_blocks(struct cache *cache)
		}

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

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