Commit graph

116 commits

Author SHA1 Message Date
nvt-se 17fa2f1618 make sure that page isolation is called after erasing a sector in reluctant GC.
simplified the GC logic a bit.
2009-04-29 13:15:59 +00:00
nvt-se 3f205a1413 reluctant gc will now wait until the sector has no free pages
before erasing the sector.
2009-04-13 22:26:31 +00:00
nvt-se 4507891ed5 made gc on removal configurable since it decreases wear levelling.
cleaned up some code.
2009-04-02 14:20:04 +00:00
nvt-se 1425537a13 Introduced two garbage collection mode: greedy and reluctant.
The greedy GC mode attempts to erase as many sectors as possible, and
it is therefore a slow operation, since the flash driver must wait
for about a second after erasing one sector. The former behavior was
to always do a greedy GC if file reservations fails due to lack of space.

The new reluctant GC stops after erasing one sector, and therefore
we often do not have to wait if there is no file system operation
in the time while the sector is being erased. We call the garbage collector
using this mode when removing a file that is not a micro log file, since
the remove function is called recursively for micro log files that are
erased because the corresponding ordinary file is erased.

This change increases the coffee test (examples/sky/test-coffee.c) speed
from 9 to 5 seconds.
2009-04-02 11:22:23 +00:00
nvt-se 6a6bb53f2e merged files must always inherit the old file end. 2009-03-26 15:57:52 +00:00
nvt-se 04ccf215e4 dereference gc_wait 2009-03-26 15:45:55 +00:00
nvt-se 8785bee644 avoid repetitive garbage collection if no files have been deleted since
the last try.
2009-03-26 12:36:10 +00:00
nvt-se bffbb06d4a corrected GC page isolation loop.
adjusted cfs_coffee_reserve signature to use cfs_offset_t instead of uint32_t.
made cfs_coffee_format also to clear *next_free.
2009-03-20 15:15:43 +00:00
nvt-se b7bdfe8daf bugfixes:
* set invalid page on all removed files which have cache entries.
* update file cache entries earlier to prevent overwrites.
2009-03-19 20:44:43 +00:00
oliverschmidt 545c0c506e Switched cfs offset type to signed int to allow backward movements with cfs_seek. 2009-03-01 12:28:39 +00:00
nvt-se 47d70f2ae3 Switched name to CFS_CONF_OFFSET_TYPE to emphasize that it is a configurable option. 2009-03-01 12:00:00 +00:00
nvt-se 63b89a67fe * cfs_opendir in Coffee now accepts any name.
* refer to the documentation of each whence parameter. Old documentation didn't   consider negative movements either.
2009-02-28 13:40:25 +00:00
oliverschmidt 938f151a66 Allow to override the whence macros individually - just like the open flags. 2009-02-28 11:39:02 +00:00
nvt-se aaa9d62304 fixed cfs_seek signature. 2009-02-27 14:52:52 +00:00
nvt-se 6615e39e27 switched unsigned int to cfs_offset_t 2009-02-27 14:50:35 +00:00
nvt-se 90e8016906 file end check must be against fdp->offset. 2009-02-27 14:35:12 +00:00
nvt-se 3191a2568c Major API change:
1. Introduced a cfs_offset_t type that designates file offsets. unsigned int
was insufficient on several platforms with non-volatile storage that exceed
the capacity of unsigned int.

2. Switched cfs_seek signature to POSIX style with a "whence" parameter.
2009-02-27 14:25:37 +00:00
nvt-se 5e038640e2 fixed error in last commit: second character must terminate 2009-02-27 13:21:59 +00:00
nvt-se a258be684f permit the current directory name "." to be used in cfs_opendir. 2009-02-27 13:19:04 +00:00
nvt-se 2295df7246 The text suggested that only append operations were supported. 2009-02-27 10:54:08 +00:00
nvt-se 2e12c2408e bug fix: removed possible null pointer dereference. 2009-02-25 23:59:26 +00:00
nvt-se bc7c90bb9f doubled the speed of uncached file openings. 2009-02-22 15:19:31 +00:00
nvt-se 957ae56b13 broke out the essence of the search algorithm to a separate function. 2009-02-19 21:35:38 +00:00
nvt-se 07c50cc200 corrected file cache status checks in previous commit. 2009-02-17 18:50:29 +00:00
nvt-se d029dd8240 cleaned up mostly the GC code.
made EOF hints optional.

default build is now ~500 bytes smaller.
2009-02-17 16:56:32 +00:00
nvt-se 883d10e136 GC fix: isolated pages must always be allocated.
page allocation: increased utilization because the algorithm failed to
count all space before.

style: renamed and simplified some code and names.
2009-02-14 19:09:17 +00:00
nvt-se b8f3dca765 fixed merge_log bug and space allocation error with isolated pages. 2009-02-12 11:24:22 +00:00
nvt-se 98f7f9a06a sizeof on coffee_fd_set is no longer suitable since it has become a
pointer.
2009-02-09 12:02:10 +00:00
fros4943 4f7f3c97b5 * added coffee_files to the protected memory needed during cfs-based checkpointing operations
* renamed cfs_coffee_get_fd_set() to cfs_coffee_get_protected_memory() to highlight that not only fd_set is protected
2009-02-09 10:08:26 +00:00
nvt-se d0a546b049 A long refactoring session yielded the following.
Technical changes:

* Factored out file specific information from the file descriptor
  structure into a new file structure.

  - Useful file metadata can be stored after the file is closed.
  - File descriptors become much smaller.
  - Significantly reduces the need to scan for the file end.

* Use correct types in all function signatures.
* Removed the directory cache.

Results:

* Enormous speed increase when opening cached files (10x-20x.)
* Multiple fd:s pointing to the same file have the correct semantics.
* About 100 bytes smaller ROM size.
* Slightly smaller static RAM size.
2009-02-08 17:08:13 +00:00
nvt-se fda75c4c08 Use the right type for pages in the directory cache. This makes the
cache much smaller on most platforms.
2009-02-03 16:21:53 +00:00
nvt-se 4b56200586 documented the new function that helps sensornet checkpointing to protect
file descriptors while rolling back state.
2009-01-29 18:24:58 +00:00
fros4943 8f462b9a52 zeroed debug flag 2009-01-23 17:28:09 +00:00
fros4943 7e5047012b added function for getting coffee's fd_set address and size 2009-01-23 16:27:49 +00:00
nvt-se 9d7e9fe297 reduced code size by removing some unnecessary statements. 2008-12-18 15:49:43 +00:00
nvt-se f041a2eada fixed compilation error when debug flag was set. 2008-12-12 10:23:49 +00:00
nvt-se 532ebc1e9a reduced the code size by 200 bytes.
fixed an EOF hint bug that occured when files where extended.
2008-12-09 16:01:18 +00:00
nvt-se 8c608efea4 added file removal capability to xmem fs 2008-11-30 22:42:40 +00:00
nvt-se 15e8675ab9 Added file removal function to the CFS API. Only cfs-coffee and cfs-posix
implements this, whereas the others just return -1.
2008-11-24 10:56:55 +00:00
nvt-se a59cbaf19f removed redundant code. 2008-11-19 14:39:08 +00:00
nvt-se 5fe2c34038 - important bug fix regarding writing after a merge log operation: parameters
must be restored.

- fixed watchdog problem in reserve
2008-11-19 13:42:07 +00:00
nvt-se c4a5010c46 break out eof update functionality since its now needed at more than one
place.
2008-11-18 23:10:30 +00:00
nvt-se 3c0d67c14f simplified complex functions through abstractions.
switched base offset to coffee_offset_t type.
2008-11-17 14:37:23 +00:00
nvt-se 25a73a43dc loop parameter must be signed in case batch_size is 0. 2008-11-17 10:34:57 +00:00
nvt-se 5fc9534188 reuse merge_log to also do file extensions. 2008-11-17 09:09:17 +00:00
nvt-se 2ec836f1f9 function argument should be a pointer 2008-11-13 14:46:32 +00:00
nvt-se 4e2d39546b removed debug output. 2008-11-13 00:58:51 +00:00
nvt-se a06ad707ee corrected EOF hint calculation. 2008-11-13 00:58:13 +00:00
nvt-se 28ed5e2a4a - Added passive directory cache filling.
- Improved variable naming.
- Cast unknown integer type parameters to format type for printf calls.
2008-11-10 23:07:53 +00:00
nvt-se a1ea7cbe3e generalized log buffer adjustments into functions. simplified next_log_record
usage.
2008-11-04 23:30:47 +00:00