projects
/
bertos.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
For at91sam7 family.
[bertos.git]
/
fs
/
battfs.c
diff --git
a/fs/battfs.c
b/fs/battfs.c
index 752ec3c61981a582e581b0ea8a7ecdd1ab33bcb0..9a4275d672628869a9344ed73ba7ca9d3c215688 100644
(file)
--- a/
fs/battfs.c
+++ b/
fs/battfs.c
@@
-174,12
+174,12
@@
static void movePages(struct BattFsSuper *disk, pgcnt_t src, int offset)
/**
* Insert \a page into page allocation array of \a disk, using \a filelen_table and
/**
* Insert \a page into page allocation array of \a disk, using \a filelen_table and
- * \a free_number to compu
r
e position.
+ * \a free_number to compu
t
e position.
*/
static void insertFreePage(struct BattFsSuper *disk, pgoff_t *filelen_table, mark_t free_number, pgcnt_t page)
{
*/
static void insertFreePage(struct BattFsSuper *disk, pgoff_t *filelen_table, mark_t free_number, pgcnt_t page)
{
- ASSERT(
mark
>= disk->min_free);
- ASSERT(
mark
<= disk->max_free);
+ ASSERT(
free_number
>= disk->min_free);
+ ASSERT(
free_number
<= disk->max_free);
pgcnt_t free_pos = countPages(filelen_table, BATTFS_MAX_FILES - 1);
free_pos += free_number - disk->min_free;
pgcnt_t free_pos = countPages(filelen_table, BATTFS_MAX_FILES - 1);
free_pos += free_number - disk->min_free;
@@
-269,7
+269,7
@@
bool battfs_init(struct BattFsSuper *disk)
/* Increase free space */
disk->free_bytes += disk->page_size - sizeof(BattFsPageHeader);
/* Increase free space */
disk->free_bytes += disk->page_size - sizeof(BattFsPageHeader);
- /* Check if
pu
tting mark to MARK_PAGE_VALID makes fcs correct */
+ /* Check if
se
tting mark to MARK_PAGE_VALID makes fcs correct */
mark_t old_mark = hdr.mark;
hdr.mark = MARK_PAGE_VALID;
rotating_init(&cks);
mark_t old_mark = hdr.mark;
hdr.mark = MARK_PAGE_VALID;
rotating_init(&cks);
@@
-339,8
+339,9
@@
bool battfs_init(struct BattFsSuper *disk)
pgcnt_t new_page, old_page;
fill_t old_fill;
pgcnt_t new_page, old_page;
fill_t old_fill;
- #warning fix seq wraparound!
- if (hdr.seq > hdr_old.seq)
+ /* Fancy check to handle seq wraparound */
+ #define HALF_SEQ (1 << ((sizeof(seq_t) * CPU_BITS_PER_CHAR) - 1))
+ if ((hdr.seq - hdr_old.seq) < HALF_SEQ)
{
/* Actual header is newer than the previuos one */
old_page = disk->page_array[array_pos];
{
/* Actual header is newer than the previuos one */
old_page = disk->page_array[array_pos];
@@
-378,7
+379,7
@@
bool battfs_init(struct BattFsSuper *disk)
}
else
{
}
else
{
- /* Check if
pu
tting mark to MARK_PAGE_VALID makes fcs correct */
+ /* Check if
se
tting mark to MARK_PAGE_VALID makes fcs correct */
mark_t mark = hdr.mark;
hdr.mark = MARK_PAGE_VALID;
rotating_init(&cks);
mark_t mark = hdr.mark;
hdr.mark = MARK_PAGE_VALID;
rotating_init(&cks);