Merge pull request #457 from Ostrokrzew/false_stats

Fix broken 'dirty_for' stats
This commit is contained in:
Robert Baldyga
2021-03-18 10:24:02 +01:00
committed by GitHub
8 changed files with 19 additions and 16 deletions

View File

@@ -1192,8 +1192,9 @@ static void _recovery_rebuild_cline_metadata(ocf_cache_t cache,
env_atomic_inc(&core->runtime_meta->dirty_clines);
env_atomic_inc(&core->runtime_meta->
part_counters[part_id].dirty_clines);
env_atomic64_cmpxchg(&core->runtime_meta->dirty_since,
0, env_get_tick_count());
if (!env_atomic64_read(&core->runtime_meta->dirty_since))
env_atomic64_cmpxchg(&core->runtime_meta->dirty_since, 0,
env_ticks_to_secs(env_get_tick_count()));
}
}

View File

@@ -57,11 +57,11 @@ ocf_cache_mode_t ocf_cache_get_mode(ocf_cache_t cache)
return cache->conf_meta->cache_mode;
}
static uint32_t _calc_dirty_for(uint64_t dirty_since)
static uint64_t _calc_dirty_for(uint64_t dirty_since)
{
return dirty_since ?
(env_ticks_to_msecs(env_get_tick_count() - dirty_since) / 1000)
: 0;
uint64_t current_time = env_ticks_to_secs(env_get_tick_count());
return dirty_since ? (current_time - dirty_since) : 0;
}
int ocf_cache_get_info(ocf_cache_t cache, struct ocf_cache_info *info)

View File

@@ -147,11 +147,11 @@ int ocf_core_visit(ocf_cache_t cache, ocf_core_visitor_t visitor, void *cntx,
/* *** HELPER FUNCTIONS *** */
static uint32_t _calc_dirty_for(uint64_t dirty_since)
static uint64_t _calc_dirty_for(uint64_t dirty_since)
{
return dirty_since ?
(env_ticks_to_msecs(env_get_tick_count() - dirty_since) / 1000)
: 0;
uint64_t current_time = env_ticks_to_secs(env_get_tick_count());
return dirty_since ? (current_time - dirty_since) : 0;
}
static inline struct ocf_request *ocf_io_to_req(struct ocf_io *io)

View File

@@ -157,8 +157,10 @@ void set_cache_line_dirty(struct ocf_cache *cache, uint8_t start_bit,
/*
* If this is first dirty cline set dirty timestamp
*/
env_atomic64_cmpxchg(&req->core->runtime_meta->dirty_since,
0, env_get_tick_count());
if (!env_atomic64_read(&req->core->runtime_meta->dirty_since))
env_atomic64_cmpxchg(
&req->core->runtime_meta->dirty_since, 0,
env_ticks_to_secs(env_get_tick_count()));
/*
* Update the number of dirty cached data for that