reluctant gc will now wait until the sector has no free pages

before erasing the sector.
This commit is contained in:
nvt-se 2009-04-13 22:26:31 +00:00
parent c0fb680f12
commit 3f205a1413

View file

@ -281,7 +281,11 @@ collect_garbage(int mode)
get_sector_status(sector, &stats); get_sector_status(sector, &stats);
PRINTF("Coffee: Sector %u has %u active, %u free, and %u obsolete pages.\n", PRINTF("Coffee: Sector %u has %u active, %u free, and %u obsolete pages.\n",
sector, (unsigned)stats.active, (unsigned)stats.free, (unsigned)stats.obsolete); sector, (unsigned)stats.active, (unsigned)stats.free, (unsigned)stats.obsolete);
if(stats.active == 0 && stats.obsolete > 0) { if(stats.active > 0) {
continue;
}
if((mode == GC_RELUCTANT && stats.free == 0) ||
(mode == GC_GREEDY && stats.obsolete > 0)) {
COFFEE_ERASE(sector); COFFEE_ERASE(sector);
PRINTF("Coffee: Erased sector %d!\n", sector); PRINTF("Coffee: Erased sector %d!\n", sector);
first_page = sector * COFFEE_PAGES_PER_SECTOR; first_page = sector * COFFEE_PAGES_PER_SECTOR;