Compare commits

..

1 Commits

Author SHA1 Message Date
Christopher Haster
b1c15c1768 Fixed script issue with bash expansion inside makefile parameter
This was causing code sizes to be reported with several of the logging
functions still built in. A useful number, but not the minimum
achievable code size.
2018-07-10 10:43:58 -05:00
5 changed files with 19 additions and 60 deletions

View File

@@ -16,7 +16,6 @@
#include <unistd.h> #include <unistd.h>
#include <assert.h> #include <assert.h>
#include <stdbool.h> #include <stdbool.h>
#include <inttypes.h>
// Block device emulated on existing filesystem // Block device emulated on existing filesystem
@@ -86,7 +85,7 @@ int lfs_emubd_read(const struct lfs_config *cfg, lfs_block_t block,
memset(data, 0, size); memset(data, 0, size);
// Read data // Read data
snprintf(emu->child, LFS_NAME_MAX, "%" PRIx32, block); snprintf(emu->child, LFS_NAME_MAX, "%x", block);
FILE *f = fopen(emu->path, "rb"); FILE *f = fopen(emu->path, "rb");
if (!f && errno != ENOENT) { if (!f && errno != ENOENT) {
@@ -125,7 +124,7 @@ int lfs_emubd_prog(const struct lfs_config *cfg, lfs_block_t block,
assert(block < cfg->block_count); assert(block < cfg->block_count);
// Program data // Program data
snprintf(emu->child, LFS_NAME_MAX, "%" PRIx32, block); snprintf(emu->child, LFS_NAME_MAX, "%x", block);
FILE *f = fopen(emu->path, "r+b"); FILE *f = fopen(emu->path, "r+b");
if (!f) { if (!f) {
@@ -172,7 +171,7 @@ int lfs_emubd_erase(const struct lfs_config *cfg, lfs_block_t block) {
assert(block < cfg->block_count); assert(block < cfg->block_count);
// Erase the block // Erase the block
snprintf(emu->child, LFS_NAME_MAX, "%" PRIx32, block); snprintf(emu->child, LFS_NAME_MAX, "%x", block);
struct stat st; struct stat st;
int err = stat(emu->path, &st); int err = stat(emu->path, &st);
if (err && errno != ENOENT) { if (err && errno != ENOENT) {
@@ -240,3 +239,4 @@ int lfs_emubd_sync(const struct lfs_config *cfg) {
return 0; return 0;
} }

View File

@@ -10,11 +10,6 @@
#include "lfs.h" #include "lfs.h"
#include "lfs_util.h" #include "lfs_util.h"
#ifdef __cplusplus
extern "C"
{
#endif
// Config options // Config options
#ifndef LFS_EMUBD_READ_SIZE #ifndef LFS_EMUBD_READ_SIZE
@@ -80,8 +75,4 @@ int lfs_emubd_erase(const struct lfs_config *cfg, lfs_block_t block);
int lfs_emubd_sync(const struct lfs_config *cfg); int lfs_emubd_sync(const struct lfs_config *cfg);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif #endif

44
lfs.c
View File

@@ -7,8 +7,6 @@
#include "lfs.h" #include "lfs.h"
#include "lfs_util.h" #include "lfs_util.h"
#include <inttypes.h>
/// Caching block device operations /// /// Caching block device operations ///
static int lfs_cache_read(lfs_t *lfs, lfs_cache_t *rcache, static int lfs_cache_read(lfs_t *lfs, lfs_cache_t *rcache,
@@ -310,8 +308,7 @@ static int lfs_alloc(lfs_t *lfs, lfs_block_t *block) {
// check if we have looked at all blocks since last ack // check if we have looked at all blocks since last ack
if (lfs->free.ack == 0) { if (lfs->free.ack == 0) {
LFS_WARN("No more free space %" PRIu32, LFS_WARN("No more free space %d", lfs->free.i + lfs->free.off);
lfs->free.i + lfs->free.off);
return LFS_ERR_NOSPC; return LFS_ERR_NOSPC;
} }
@@ -417,14 +414,11 @@ static int lfs_dir_alloc(lfs_t *lfs, lfs_dir_t *dir) {
// rather than clobbering one of the blocks we just pretend // rather than clobbering one of the blocks we just pretend
// the revision may be valid // the revision may be valid
int err = lfs_bd_read(lfs, dir->pair[0], 0, &dir->d.rev, 4); int err = lfs_bd_read(lfs, dir->pair[0], 0, &dir->d.rev, 4);
if (err && err != LFS_ERR_CORRUPT) { dir->d.rev = lfs_fromle32(dir->d.rev);
if (err) {
return err; return err;
} }
if (err != LFS_ERR_CORRUPT) {
dir->d.rev = lfs_fromle32(dir->d.rev);
}
// set defaults // set defaults
dir->d.rev += 1; dir->d.rev += 1;
dir->d.size = sizeof(dir->d)+4; dir->d.size = sizeof(dir->d)+4;
@@ -448,9 +442,6 @@ static int lfs_dir_fetch(lfs_t *lfs,
int err = lfs_bd_read(lfs, tpair[i], 0, &test, sizeof(test)); int err = lfs_bd_read(lfs, tpair[i], 0, &test, sizeof(test));
lfs_dir_fromle32(&test); lfs_dir_fromle32(&test);
if (err) { if (err) {
if (err == LFS_ERR_CORRUPT) {
continue;
}
return err; return err;
} }
@@ -470,9 +461,6 @@ static int lfs_dir_fetch(lfs_t *lfs,
err = lfs_bd_crc(lfs, tpair[i], sizeof(test), err = lfs_bd_crc(lfs, tpair[i], sizeof(test),
(0x7fffffff & test.size) - sizeof(test), &crc); (0x7fffffff & test.size) - sizeof(test), &crc);
if (err) { if (err) {
if (err == LFS_ERR_CORRUPT) {
continue;
}
return err; return err;
} }
@@ -490,8 +478,7 @@ static int lfs_dir_fetch(lfs_t *lfs,
} }
if (!valid) { if (!valid) {
LFS_ERROR("Corrupted dir pair at %" PRIu32 " %" PRIu32 , LFS_ERROR("Corrupted dir pair at %d %d", tpair[0], tpair[1]);
tpair[0], tpair[1]);
return LFS_ERR_CORRUPT; return LFS_ERR_CORRUPT;
} }
@@ -614,7 +601,7 @@ static int lfs_dir_commit(lfs_t *lfs, lfs_dir_t *dir,
break; break;
relocate: relocate:
//commit was corrupted //commit was corrupted
LFS_DEBUG("Bad block at %" PRIu32, dir->pair[0]); LFS_DEBUG("Bad block at %d", dir->pair[0]);
// drop caches and prepare to relocate block // drop caches and prepare to relocate block
relocated = true; relocated = true;
@@ -622,8 +609,7 @@ relocate:
// can't relocate superblock, filesystem is now frozen // can't relocate superblock, filesystem is now frozen
if (lfs_paircmp(oldpair, (const lfs_block_t[2]){0, 1}) == 0) { if (lfs_paircmp(oldpair, (const lfs_block_t[2]){0, 1}) == 0) {
LFS_WARN("Superblock %" PRIu32 " has become unwritable", LFS_WARN("Superblock %d has become unwritable", oldpair[0]);
oldpair[0]);
return LFS_ERR_CORRUPT; return LFS_ERR_CORRUPT;
} }
@@ -636,7 +622,7 @@ relocate:
if (relocated) { if (relocated) {
// update references if we relocated // update references if we relocated
LFS_DEBUG("Relocating %" PRIu32 " %" PRIu32 " to %" PRIu32 " %" PRIu32, LFS_DEBUG("Relocating %d %d to %d %d",
oldpair[0], oldpair[1], dir->pair[0], dir->pair[1]); oldpair[0], oldpair[1], dir->pair[0], dir->pair[1]);
int err = lfs_relocate(lfs, oldpair, dir->pair); int err = lfs_relocate(lfs, oldpair, dir->pair);
if (err) { if (err) {
@@ -1241,7 +1227,7 @@ static int lfs_ctz_extend(lfs_t *lfs,
} }
relocate: relocate:
LFS_DEBUG("Bad block at %" PRIu32, nblock); LFS_DEBUG("Bad block at %d", nblock);
// just clear cache and try a new block // just clear cache and try a new block
lfs_cache_drop(lfs, &lfs->pcache); lfs_cache_drop(lfs, &lfs->pcache);
@@ -1398,7 +1384,7 @@ int lfs_file_close(lfs_t *lfs, lfs_file_t *file) {
static int lfs_file_relocate(lfs_t *lfs, lfs_file_t *file) { static int lfs_file_relocate(lfs_t *lfs, lfs_file_t *file) {
relocate: relocate:
LFS_DEBUG("Bad block at %" PRIu32, file->block); LFS_DEBUG("Bad block at %d", file->block);
// just relocate what exists into new block // just relocate what exists into new block
lfs_block_t nblock; lfs_block_t nblock;
@@ -2409,8 +2395,7 @@ static int lfs_relocate(lfs_t *lfs,
// update internal root // update internal root
if (lfs_paircmp(oldpair, lfs->root) == 0) { if (lfs_paircmp(oldpair, lfs->root) == 0) {
LFS_DEBUG("Relocating root %" PRIu32 " %" PRIu32, LFS_DEBUG("Relocating root %d %d", newpair[0], newpair[1]);
newpair[0], newpair[1]);
lfs->root[0] = newpair[0]; lfs->root[0] = newpair[0];
lfs->root[1] = newpair[1]; lfs->root[1] = newpair[1];
} }
@@ -2466,7 +2451,7 @@ int lfs_deorphan(lfs_t *lfs) {
if (!res) { if (!res) {
// we are an orphan // we are an orphan
LFS_DEBUG("Found orphan %" PRIu32 " %" PRIu32, LFS_DEBUG("Found orphan %d %d",
pdir.d.tail[0], pdir.d.tail[1]); pdir.d.tail[0], pdir.d.tail[1]);
pdir.d.tail[0] = cwd.d.tail[0]; pdir.d.tail[0] = cwd.d.tail[0];
@@ -2482,7 +2467,7 @@ int lfs_deorphan(lfs_t *lfs) {
if (!lfs_pairsync(entry.d.u.dir, pdir.d.tail)) { if (!lfs_pairsync(entry.d.u.dir, pdir.d.tail)) {
// we have desynced // we have desynced
LFS_DEBUG("Found desync %" PRIu32 " %" PRIu32, LFS_DEBUG("Found desync %d %d",
entry.d.u.dir[0], entry.d.u.dir[1]); entry.d.u.dir[0], entry.d.u.dir[1]);
pdir.d.tail[0] = entry.d.u.dir[0]; pdir.d.tail[0] = entry.d.u.dir[0];
@@ -2517,14 +2502,14 @@ int lfs_deorphan(lfs_t *lfs) {
} }
if (moved) { if (moved) {
LFS_DEBUG("Found move %" PRIu32 " %" PRIu32, LFS_DEBUG("Found move %d %d",
entry.d.u.dir[0], entry.d.u.dir[1]); entry.d.u.dir[0], entry.d.u.dir[1]);
err = lfs_dir_remove(lfs, &cwd, &entry); err = lfs_dir_remove(lfs, &cwd, &entry);
if (err) { if (err) {
return err; return err;
} }
} else { } else {
LFS_DEBUG("Found partial move %" PRIu32 " %" PRIu32, LFS_DEBUG("Found partial move %d %d",
entry.d.u.dir[0], entry.d.u.dir[1]); entry.d.u.dir[0], entry.d.u.dir[1]);
entry.d.type &= ~0x80; entry.d.type &= ~0x80;
err = lfs_dir_update(lfs, &cwd, &entry, NULL); err = lfs_dir_update(lfs, &cwd, &entry, NULL);
@@ -2540,3 +2525,4 @@ int lfs_deorphan(lfs_t *lfs) {
return 0; return 0;
} }

9
lfs.h
View File

@@ -10,11 +10,6 @@
#include <stdint.h> #include <stdint.h>
#include <stdbool.h> #include <stdbool.h>
#ifdef __cplusplus
extern "C"
{
#endif
/// Version info /// /// Version info ///
@@ -465,8 +460,4 @@ int lfs_traverse(lfs_t *lfs, int (*cb)(void*, lfs_block_t), void *data);
int lfs_deorphan(lfs_t *lfs); int lfs_deorphan(lfs_t *lfs);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif #endif

View File

@@ -34,11 +34,6 @@
#include <stdio.h> #include <stdio.h>
#endif #endif
#ifdef __cplusplus
extern "C"
{
#endif
// Macros, may be replaced by system specific wrappers. Arguments to these // Macros, may be replaced by system specific wrappers. Arguments to these
// macros must not have side-effects as the macros can be removed for a smaller // macros must not have side-effects as the macros can be removed for a smaller
@@ -178,9 +173,5 @@ static inline void lfs_free(void *p) {
} }
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif #endif
#endif #endif