Check relaxation condition in each step of flush loop

Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
This commit is contained in:
Adam Rutkowski 2020-03-20 13:18:24 -04:00
parent 4d61d56249
commit fd328bd0a1

View File

@ -165,16 +165,10 @@ static int _ocf_mngt_get_sectors(ocf_cache_t cache, ocf_core_id_t core_id,
ocf_metadata_get_core_info(cache, line, &i_core_id, ocf_metadata_get_core_info(cache, line, &i_core_id,
&core_line); &core_line);
if (i_core_id != core_id) if (i_core_id == core_id &&
continue; metadata_test_valid_any(cache, line) &&
metadata_test_dirty(cache, line)) {
if (!metadata_test_valid_any(cache, line)) /* It's valid and dirty target core cacheline */
continue;
if (!metadata_test_dirty(cache, line))
continue;
/* It's core_id cacheline and it's valid and it's dirty! */
elem->cache_line = line; elem->cache_line = line;
elem->core_line = core_line; elem->core_line = core_line;
elem->core_id = i_core_id; elem->core_id = i_core_id;
@ -184,6 +178,7 @@ static int _ocf_mngt_get_sectors(ocf_cache_t cache, ocf_core_id_t core_id,
/* stop if all cachelines were found */ /* stop if all cachelines were found */
if (dirty_found == dirty_total) if (dirty_found == dirty_total)
break; break;
}
if ((line + 1) % 1000000 == 0) { if ((line + 1) % 1000000 == 0) {
ocf_metadata_end_exclusive_access( ocf_metadata_end_exclusive_access(
@ -272,12 +267,8 @@ static int _ocf_mngt_get_flush_containers(ocf_cache_t cache,
for (line = 0; line < cache->device->collision_table_entries; line++) { for (line = 0; line < cache->device->collision_table_entries; line++) {
ocf_metadata_get_core_info(cache, line, &core_id, &core_line); ocf_metadata_get_core_info(cache, line, &core_id, &core_line);
if (!metadata_test_valid_any(cache, line)) if (metadata_test_valid_any(cache, line) &&
continue; metadata_test_dirty(cache, line)) {
if (!metadata_test_dirty(cache, line))
continue;
curr = &fc[core_revmap[core_id]]; curr = &fc[core_revmap[core_id]];
ENV_BUG_ON(curr->iter >= curr->count); ENV_BUG_ON(curr->iter >= curr->count);
@ -292,6 +283,7 @@ static int _ocf_mngt_get_flush_containers(ocf_cache_t cache,
/* stop if all cachelines were found */ /* stop if all cachelines were found */
if (dirty_found == dirty_total) if (dirty_found == dirty_total)
break; break;
}
if ((line + 1) % 1000000 == 0) { if ((line + 1) % 1000000 == 0) {
ocf_metadata_end_exclusive_access( ocf_metadata_end_exclusive_access(