s32_t SPIFFS_format(spiffs *fs) { SPIFFS_API_CHECK_CFG(fs); if (SPIFFS_CHECK_MOUNT(fs)) { fs->err_code = SPIFFS_ERR_MOUNTED; return -1; } s32_t res; SPIFFS_LOCK(fs); spiffs_block_ix bix = 0; while (bix < fs->block_count) { fs->max_erase_count = 0; res = spiffs_erase_block(fs, bix); if (res != SPIFFS_OK) { res = SPIFFS_ERR_ERASE_FAIL; } SPIFFS_API_CHECK_RES_UNLOCK(fs, res); bix++; } SPIFFS_UNLOCK(fs); return 0; }
s32_t SPIFFS_format(spiffs *fs) { #if SPIFFS_READ_ONLY (void)fs; return SPIFFS_ERR_RO_NOT_IMPL; #else SPIFFS_API_CHECK_CFG(fs); if (SPIFFS_CHECK_MOUNT(fs)) { fs->err_code = SPIFFS_ERR_MOUNTED; return -1; } s32_t res; SPIFFS_LOCK(fs); spiffs_block_ix bix = 0; while (bix < fs->block_count) { fs->max_erase_count = 0; res = spiffs_erase_block(fs, bix); if (res != SPIFFS_OK) { res = SPIFFS_ERR_ERASE_FAIL; } SPIFFS_API_CHECK_RES_UNLOCK(fs, res); bix++; } SPIFFS_UNLOCK(fs); return 0; #endif // SPIFFS_READ_ONLY }
// Erases a logical block and updates the erase counter. // If cache is enabled, all pages that might be cached in this block // is dropped. static s32_t spiffs_gc_erase_block( spiffs *fs, spiffs_block_ix bix) { s32_t res; SPIFFS_GC_DBG("gc: erase block %i\n", bix); res = spiffs_erase_block(fs, bix); SPIFFS_CHECK_RES(res); #if SPIFFS_CACHE { u32_t i; for (i = 0; i < SPIFFS_PAGES_PER_BLOCK(fs); i++) { spiffs_cache_drop_page(fs, SPIFFS_PAGE_FOR_BLOCK(fs, bix) + i); } } #endif return res; }