Hi below is the function i am using to run garbage collection after deleting the data but the result i am getting was the same as before garbage collection.
I mean DIRTY_RECORDS_BEFORE_GC = DIRTY_RECORDS_AFTER_GC.
static void delete_all() { NRF_LOG_INFO("deleting all records..."); ret_code_t rc; bool next_record = true; while (next_record) { fds_record_desc_t record_desc = {0}; fds_find_token_t ftok = {0}; if (fds_record_iterate(&record_desc, &ftok) == FDS_SUCCESS) { ret_code_t ret = fds_record_delete(&record_desc); while (!fds_delete_complete) ; fds_delete_complete = false; //NRF_LOG_INFO("Iterate suc.."); next_record = true; } else { next_record = false; } } fds_stat_t stat = {0}; rc = fds_stat(&stat); APP_ERROR_CHECK(rc); uint16_t no_of_records = stat.valid_records; NRF_LOG_INFO("delete all:: %d", no_of_records); NRF_LOG_INFO("dirty records %d", stat.dirty_records); fds_gc(); while (!fds_gc_complete); fds_gc_complete = false; rc = fds_stat(&stat); APP_ERROR_CHECK(rc); NRF_LOG_INFO("dirty records after gc %d", stat.dirty_records); }
Do i need to reinitialize the fds again to get proper dirty records value?