aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/md/dm-cache-policy-smq.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/drivers/md/dm-cache-policy-smq.c b/drivers/md/dm-cache-policy-smq.c
index d13d9edf8dfe..72479bd61e11 100644
--- a/drivers/md/dm-cache-policy-smq.c
+++ b/drivers/md/dm-cache-policy-smq.c
@@ -1120,28 +1120,30 @@ static bool clean_target_met(struct smq_policy *mq, bool idle)
1120 * Cache entries may not be populated. So we cannot rely on the 1120 * Cache entries may not be populated. So we cannot rely on the
1121 * size of the clean queue. 1121 * size of the clean queue.
1122 */ 1122 */
1123 unsigned nr_clean = from_cblock(mq->cache_size) - q_size(&mq->dirty); 1123 unsigned nr_clean;
1124 1124
1125 if (idle) 1125 if (idle) {
1126 /* 1126 /*
1127 * We'd like to clean everything. 1127 * We'd like to clean everything.
1128 */ 1128 */
1129 return q_size(&mq->dirty) == 0u; 1129 return q_size(&mq->dirty) == 0u;
1130 else 1130 }
1131 return (nr_clean + btracker_nr_writebacks_queued(mq->bg_work)) >= 1131
1132 percent_to_target(mq, CLEAN_TARGET); 1132 nr_clean = from_cblock(mq->cache_size) - q_size(&mq->dirty);
1133 return (nr_clean + btracker_nr_writebacks_queued(mq->bg_work)) >=
1134 percent_to_target(mq, CLEAN_TARGET);
1133} 1135}
1134 1136
1135static bool free_target_met(struct smq_policy *mq, bool idle) 1137static bool free_target_met(struct smq_policy *mq, bool idle)
1136{ 1138{
1137 unsigned nr_free = from_cblock(mq->cache_size) - 1139 unsigned nr_free;
1138 mq->cache_alloc.nr_allocated;
1139 1140
1140 if (idle) 1141 if (!idle)
1141 return (nr_free + btracker_nr_demotions_queued(mq->bg_work)) >=
1142 percent_to_target(mq, FREE_TARGET);
1143 else
1144 return true; 1142 return true;
1143
1144 nr_free = from_cblock(mq->cache_size) - mq->cache_alloc.nr_allocated;
1145 return (nr_free + btracker_nr_demotions_queued(mq->bg_work)) >=
1146 percent_to_target(mq, FREE_TARGET);
1145} 1147}
1146 1148
1147/*----------------------------------------------------------------*/ 1149/*----------------------------------------------------------------*/