Major performance boost to directory listings and non-cached file openings.
This commit is contained in:
parent
62b7ef5173
commit
671f5c6393
|
@ -248,7 +248,10 @@ find_file(const char *name)
|
||||||
} else if(COFFEE_PAGE_OBSOLETE(hdr)) {
|
} else if(COFFEE_PAGE_OBSOLETE(hdr)) {
|
||||||
page += hdr.max_pages;
|
page += hdr.max_pages;
|
||||||
} else {
|
} else {
|
||||||
page++;
|
/* It follows from the properties of the page allocation algorithm
|
||||||
|
that if a free page is encountered, the rest of the sector is
|
||||||
|
also free. */
|
||||||
|
page = (page + COFFEE_PAGES_PER_SECTOR) & ~(COFFEE_PAGES_PER_SECTOR - 1);
|
||||||
}
|
}
|
||||||
watchdog_periodic();
|
watchdog_periodic();
|
||||||
} while(page < COFFEE_PAGE_COUNT);
|
} while(page < COFFEE_PAGE_COUNT);
|
||||||
|
@ -906,8 +909,11 @@ cfs_readdir(struct cfs_dir *dir, struct cfs_dirent *entry)
|
||||||
page += hdr.max_pages;
|
page += hdr.max_pages;
|
||||||
*(uint16_t *)dir->dummy_space = page;
|
*(uint16_t *)dir->dummy_space = page;
|
||||||
return 0;
|
return 0;
|
||||||
|
} else if (COFFEE_PAGE_FREE(hdr)) {
|
||||||
|
page = (page + COFFEE_PAGES_PER_SECTOR) & ~(COFFEE_PAGES_PER_SECTOR - 1);
|
||||||
|
} else {
|
||||||
|
page += hdr.max_pages;
|
||||||
}
|
}
|
||||||
page += COFFEE_PAGE_OBSOLETE(hdr) ? hdr.max_pages : 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|
Loading…
Reference in a new issue