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?