aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHeinz Mauelshagen <heinzm@redhat.com>2013-10-14 11:24:43 -0400
committerMike Snitzer <snitzer@redhat.com>2013-11-09 18:20:24 -0500
commitffcbcb6720ab6a4bb6e0a51b3711e8c60872d281 (patch)
tree68cad35eb1e891e819979babe5b00775ed186ba0
parent40c57f475f416ab241124e1e6a593b2f982eaae3 (diff)
dm cache: optimize commit_if_needed
Check commit_requested flag _before_ calling dm_cache_changed_this_transaction() superfluously. Also, be sure to set last_commit_jiffies _after_ dm_cache_commit() completes. Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com> Signed-off-by: Joe Thornber <ejt@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
-rw-r--r--drivers/md/dm-cache-target.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c
index 05a10c02043f..4b564069e08f 100644
--- a/drivers/md/dm-cache-target.c
+++ b/drivers/md/dm-cache-target.c
@@ -1234,15 +1234,17 @@ static int need_commit_due_to_time(struct cache *cache)
1234 1234
1235static int commit_if_needed(struct cache *cache) 1235static int commit_if_needed(struct cache *cache)
1236{ 1236{
1237 if (dm_cache_changed_this_transaction(cache->cmd) && 1237 int r = 0;
1238 (cache->commit_requested || need_commit_due_to_time(cache))) { 1238
1239 if ((cache->commit_requested || need_commit_due_to_time(cache)) &&
1240 dm_cache_changed_this_transaction(cache->cmd)) {
1239 atomic_inc(&cache->stats.commit_count); 1241 atomic_inc(&cache->stats.commit_count);
1240 cache->last_commit_jiffies = jiffies;
1241 cache->commit_requested = false; 1242 cache->commit_requested = false;
1242 return dm_cache_commit(cache->cmd, false); 1243 r = dm_cache_commit(cache->cmd, false);
1244 cache->last_commit_jiffies = jiffies;
1243 } 1245 }
1244 1246
1245 return 0; 1247 return r;
1246} 1248}
1247 1249
1248static void process_deferred_bios(struct cache *cache) 1250static void process_deferred_bios(struct cache *cache)