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
nvt-se
6ca91f1271
revoked accidental renaming om dir cache entries.
2008-11-04 23:12:44 +00:00
nvt-se
e6a7089942
refactored the code and reduced the ROM size a few dozen of bytes
2008-11-04 23:09:55 +00:00
nvt-se
ae8c93d0aa
cut 500 bytes of ROM size.
2008-11-04 17:48:36 +00:00
nvt-se
1309cb474d
removed redundant code
2008-11-04 17:23:59 +00:00
nvt-se
becfecfe1b
reduced rom size by ~40 bytes
2008-11-04 16:58:52 +00:00
nvt-se
a6a17bc52c
optimized the merge log operation and fixed a fd update bug.
2008-11-04 15:49:54 +00:00
nvt-se
71d01a44a1
adjust read chunk size according to log entry size
2008-11-03 20:21:43 +00:00
nvt-se
fff8b46110
fixed a buffer bug with the micro logs
2008-11-03 16:58:18 +00:00
nvt-se
a6afeb2de6
fixed bug with dislocated end of file search
2008-11-03 15:13:13 +00:00
nvt-se
afeedb1f2b
fixed compiler warnings that were introduced with the new reserve function.
2008-10-29 15:36:21 +00:00
nvt-se
e15fbdbd40
allow duplicate reservations when flushing the log.
2008-10-28 14:47:50 +00:00
nvt-se
f05ccac0a7
documented the extra Coffee functions.
2008-10-21 13:39:56 +00:00
nvt-se
b591bb1b72
read as much as possible, even when reading log records.
2008-10-21 13:26:24 +00:00
nvt-se
7d07a7f65d
prohibit 0-sized log entries.
2008-10-16 13:17:27 +00:00
nvt-se
8bb7e37baf
- new log semantics: read the previous log entry only if the new one doesn't completely overshadow it.
...
- bug fix: prohibit file reservations with names that already exist.
2008-10-16 12:54:36 +00:00
nvt-se
77c72f4588
improved log write semantics on configured logs.
2008-10-16 09:58:57 +00:00
nvt-se
ccd492f687
sanity check on configure_log parameters
2008-10-15 13:57:30 +00:00
nvt-se
10639bc982
use abstract types for offsets and pages so that we can easily port it to
...
very large or small memories.
2008-10-03 19:27:28 +00:00
nvt-se
7f3e81f5d3
fixed file descriptor leakage and erroneous flag setting.
2008-09-21 16:07:26 +00:00
nvt-se
9e7add658b
corrected assignments.
2008-09-21 15:30:51 +00:00
nvt-se
ac6ce4cbf1
increased sequential read performance by eliminating a header reading.
2008-09-21 15:01:48 +00:00
nvt-se
4b6abd4fb7
bug fixes:
...
- close all file descriptors after formatting.
- do not increase file size when flushing the log.
- make sure that the fd is positive in FD_VALID.
2008-09-21 12:49:08 +00:00
nvt-se
195062416e
corrected parameter type
2008-08-28 14:32:53 +00:00
nvt-se
86bce2636d
fixed bug with eof hint
2008-08-28 14:31:10 +00:00
nvt-se
f122654317
the isolated flag must have higher precedence than the obsolete flag
2008-08-28 12:50:09 +00:00
nvt-se
e483f335ce
activated EOF hints and fixed a bug in the garbage collector.
2008-08-25 09:57:38 +00:00
nvt-se
8b7e743921
Enforce the number of pages in a sector to be a power of two.
2008-08-15 22:38:43 +00:00
nvt-se
c36a0a33fc
Improved the performance of the garbage collector and the algorithm for
...
finding contiguous pages.
Adjusted the file header and added a validity indicator.
Removed some redundant code and fixes minor issues in the text.
2008-08-15 12:34:56 +00:00
nvt-se
2b68f88e77
moved platform independent definitions
2008-07-11 21:39:26 +00:00
nvt-se
e8a85b3726
moved platform independent code to the right place
2008-07-11 21:35:10 +00:00
oliverschmidt
5ac52ec4d1
Added VC++ compatibility.
2008-07-06 11:08:07 +00:00
nvt-se
671f5c6393
Major performance boost to directory listings and non-cached file openings.
2008-07-04 02:54:30 +00:00
nvt-se
45c6d92377
exclude log files from directory list
2008-07-03 23:50:54 +00:00
nvt-se
3fc9c96ac2
should be comparison, not assignment
2008-07-03 23:41:28 +00:00
nvt-se
8f64a71362
Simplified file finding code.
...
Renamed fd_set to coffee_fd_set in order to avoid name clash on the native
platform.
2008-07-03 23:29:58 +00:00
nvt-se
379b09d576
Fixed bug that occured after the node had been rebooted.
2008-07-03 22:59:10 +00:00
nvt-se
65ec55e68f
call watchdog_periodic in potentially long-running loops
2008-07-02 15:18:43 +00:00
nvt-se
7e4bab3cc8
turned off debugging by default
2008-07-02 12:06:02 +00:00
nvt-se
26716fe7a1
added formatting function and made code style compliant
2008-07-02 11:11:13 +00:00
nvt-se
63a8390f51
no debugging printouts by default
2008-05-14 14:02:48 +00:00
nvt-se
92649bedce
A flash file system for sensor nodes.
2008-04-28 10:33:14 +00:00
oliverschmidt
5d910d643e
Set directory entry size if available in some dirent field. Currently for the Apple2 only.
2008-03-29 13:54:56 +00:00
adamdunkels
eced8a3ec2
Removed left-over debug printouts
2008-01-24 23:07:05 +00:00
adamdunkels
af73a358f4
Added const to constant arguments
2008-01-24 13:08:35 +00:00
adamdunkels
bf5ba0fdea
Added missing filesize field
2008-01-09 08:12:52 +00:00
adamdunkels
bac526c5f1
Fixed handling of CFS_WRITE and CFS_APPEND
2008-01-08 14:27:06 +00:00
oliverschmidt
1ecf65d6c2
Allow to implement cfs API on preprocessor level. The benefits are:
...
- Less overhead.
- Switching implementations without makefile changes.
- Compatibility with specific declaration needs. (I.e. the cc65 module loader expects the read() function to be defined as fastcall but that contradicts the cfs API declaration.)
2007-12-23 15:22:33 +00:00
oliverschmidt
f67506ba2a
Set truncate flag to make sure that overwriting a existing file doesn't result in a mix of old and new content.
2007-12-23 14:12:44 +00:00
oliverschmidt
0564cc50fd
Splitted POSIX based cfs implementation to avoid pulling in potentially large POSIX directory I/O functions without needing them at all.
2007-12-21 01:36:01 +00:00
oliverschmidt
034111b106
Made cfs implementation adhere to (new) cfs interface, streamlined implementation, reduced header dependencies and removed the 'cfs-root/' prefix. The reasoning behind the latter:
...
- Productive embedded targets don't use the posix based variant anyway.
- For testing purposes the prefix is a hurdle as the documentation doesn't mention it ;-))
- The prefix is incompatible with posix implementations lacking directory support (like the C64).
2007-11-22 11:37:34 +00:00
oliverschmidt
df1c80ee79
Made cfs implementation adhere to (new) cfs interface.
2007-11-22 11:29:13 +00:00
oliverschmidt
c69a49b2a2
Improved cfs interface.
2007-11-22 11:27:08 +00:00