Example #1
0
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;
}
Example #2
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
}
Example #3
0
// 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;
}