dm cache: optimize commit_if_needed
authorHeinz Mauelshagen <heinzm@redhat.com>
Mon, 14 Oct 2013 15:24:43 +0000 (17:24 +0200)
committerMike Snitzer <snitzer@redhat.com>
Sat, 9 Nov 2013 23:20:24 +0000 (18:20 -0500)
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>
drivers/md/dm-cache-target.c

index 05a10c02043f2b6f3513997da80941b67962c9f2..4b564069e08f0f5b438dd933069597d5517cbdf6 100644 (file)
@@ -1234,15 +1234,17 @@ static int need_commit_due_to_time(struct cache *cache)
 
 static int commit_if_needed(struct cache *cache)
 {
-       if (dm_cache_changed_this_transaction(cache->cmd) &&
-           (cache->commit_requested || need_commit_due_to_time(cache))) {
+       int r = 0;
+
+       if ((cache->commit_requested || need_commit_due_to_time(cache)) &&
+           dm_cache_changed_this_transaction(cache->cmd)) {
                atomic_inc(&cache->stats.commit_count);
-               cache->last_commit_jiffies = jiffies;
                cache->commit_requested = false;
-               return dm_cache_commit(cache->cmd, false);
+               r = dm_cache_commit(cache->cmd, false);
+               cache->last_commit_jiffies = jiffies;
        }
 
-       return 0;
+       return r;
 }
 
 static void process_deferred_bios(struct cache *cache)