*/
bool battfs_fsck(struct BattFsSuper *disk)
{
- #define FSCHECK(cond) do { if(!(cond)) { LOG_ERR("\"" #cond "\"\n"); return false } } while (0)
+ #define FSCHECK(cond) do { if(!(cond)) { LOG_ERR("\"" #cond "\"\n"); return false; } } while (0)
FSCHECK(disk->free_page_start <= disk->page_count);
FSCHECK(disk->data_size < disk->page_size);
FSCHECK(page_used == disk->free_page_start);
FSCHECK(free_bytes == disk->free_bytes);
- FSCHECK(files < BATTFS_MAX_FILES);
+
return true;
}
static bool getNewPage(struct BattFsSuper *disk, pgcnt_t new_pos, inode_t inode, pgoff_t pgoff, BattFsPageHeader *new_hdr)
{
- if (disk->free_page_start >= disk->page_count)
+ if (SPACE_OVER(disk))
{
#warning TODO space over!
- LOG_INFO("No disk space available\n");
+ LOG_ERR("No disk space available!\n");
return false;
}
flushBuffer(disk);
/* Handle cache load of a new page*/
else if (fdb->start[pg_offset] != fdb->disk->curr_page)
{
+ if (SPACE_OVER(fdb->disk))
+ {
+ LOG_ERR("No disk space available!\n");
+ return total_write;
+ }
LOG_INFO("Re-writing page %d to %d\n", fdb->start[pg_offset], fdb->disk->page_array[fdb->disk->free_page_start]);
if (!loadPage(fdb->disk, fdb->start[pg_offset], &curr_hdr))
{
curr_hdr.seq++;
}
-
//LOG_INFO("writing to buffer for page %d, offset %d, size %d\n", fdb->disk->curr_page, addr_offset, wr_len);
if (fdb->disk->bufferWrite(fdb->disk, addr_offset, buf, wr_len) != wr_len)
{