+ /* Increase free space */
+ filelen_table[BATTFS_FREE_INODE]++;
+ disk->free_bytes += disk->page_size - sizeof(BattFsPageHeader);
+
+ /* Check if putting mark to MARK_PAGE_VALID makes fcs correct */
+ mark_t old_mark = hdr.mark;
+ hdr.mark = MARK_PAGE_VALID;
+ rotating_init(&cks);
+ rotating_update(&hdr, sizeof(BattFsPageHeader) - sizeof(rotating_t), &cks);
+ if (cks == hdr.fcs)
+ {
+ /*
+ * This page is a valid and marked free page.
+ * Update min and max free page sequence numbers.
+ */
+ disk->min_free = MIN(disk->min_free, old_mark);
+ disk->max_free = MAX(disk->max_free, old_mark);
+ }
+ else
+ TRACEMSG("Page [%d] invalid, keeping as free\n", page);