Compare commits

...

2 Commits

Author SHA1 Message Date
朱天龙 (Armink) 8ad7d04740
Merge pull request #113 from wu1045718093/stable-v4.x
Fix gc error when ENV full(No dirty block)
5 years ago
“teng.wu” 1fa1f838c7 Fix gc error when ENV full(No dirty block) 5 years ago

@ -1194,11 +1194,16 @@ static uint32_t new_env(sector_meta_data_t sector, size_t env_size)
__retry:
if ((empty_env = alloc_env(sector, env_size)) == FAILED_ADDR && gc_request && !already_gc) {
EF_DEBUG("Warning: Alloc an ENV (size %d) failed when new ENV. Now will GC then retry.\n", env_size);
gc_collect();
already_gc = true;
goto __retry;
if ((empty_env = alloc_env(sector, env_size)) == FAILED_ADDR) {
if (gc_request && !already_gc) {
EF_DEBUG("Warning: Alloc an ENV (size %d) failed when new ENV. Now will GC then retry.\n", env_size);
gc_collect();
already_gc = true;
goto __retry;
} else {
EF_DEBUG("Error: Alloc an ENV (size %d) failed after GC. ENV full.\n", env_size);
gc_request = false;
}
}
return empty_env;

Loading…
Cancel
Save