dm cache: simplify the IDLE vs BUSY state calculation
Drop the MODERATE state since it wasn't buying us much. Also, in check_migrations(), prepare for the next commit ("dm cache policy smq: don't do any writebacks unless IDLE") by deferring to the policy to make the final decision on whether writebacks can be serviced. Signed-off-by: Joe Thornber <ejt@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
parent
701e03e4e1
commit
49b7f76890
|
@ -1718,7 +1718,6 @@ static int invalidate_start(struct cache *cache, dm_cblock_t cblock,
|
||||||
|
|
||||||
enum busy {
|
enum busy {
|
||||||
IDLE,
|
IDLE,
|
||||||
MODERATE,
|
|
||||||
BUSY
|
BUSY
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1728,10 +1727,10 @@ static enum busy spare_migration_bandwidth(struct cache *cache)
|
||||||
sector_t current_volume = (atomic_read(&cache->nr_io_migrations) + 1) *
|
sector_t current_volume = (atomic_read(&cache->nr_io_migrations) + 1) *
|
||||||
cache->sectors_per_block;
|
cache->sectors_per_block;
|
||||||
|
|
||||||
if (current_volume <= cache->migration_threshold)
|
if (idle && current_volume <= cache->migration_threshold)
|
||||||
return idle ? IDLE : MODERATE;
|
return IDLE;
|
||||||
else
|
else
|
||||||
return idle ? MODERATE : BUSY;
|
return BUSY;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void inc_hit_counter(struct cache *cache, struct bio *bio)
|
static void inc_hit_counter(struct cache *cache, struct bio *bio)
|
||||||
|
@ -2047,8 +2046,6 @@ static void check_migrations(struct work_struct *ws)
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
b = spare_migration_bandwidth(cache);
|
b = spare_migration_bandwidth(cache);
|
||||||
if (b == BUSY)
|
|
||||||
break;
|
|
||||||
|
|
||||||
r = policy_get_background_work(cache->policy, b == IDLE, &op);
|
r = policy_get_background_work(cache->policy, b == IDLE, &op);
|
||||||
if (r == -ENODATA)
|
if (r == -ENODATA)
|
||||||
|
|
Loading…
Reference in a new issue