From 450e9e24667e0a9d8fd685c02c028d3f0fc57622 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Thu, 16 Nov 2017 17:59:45 +0000 Subject: More debug on MFS. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11022 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/lib/complex/mfs/mfs.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'os/hal') diff --git a/os/hal/lib/complex/mfs/mfs.c b/os/hal/lib/complex/mfs/mfs.c index 8cede8416..55ff8d83e 100644 --- a/os/hal/lib/complex/mfs/mfs.c +++ b/os/hal/lib/complex/mfs/mfs.c @@ -617,10 +617,11 @@ static mfs_error_t mfs_bank_mount(MFSDriver *mfsp, */ static mfs_error_t mfs_garbage_collect(MFSDriver *mfsp) { unsigned i; - mfs_bank_t dbank; + mfs_bank_t sbank, dbank; flash_offset_t dest_offset; - if (mfsp->current_bank == MFS_BANK_0) { + sbank = mfsp->current_bank; + if (sbank == MFS_BANK_0) { dbank = MFS_BANK_1; } else { @@ -652,7 +653,7 @@ static mfs_error_t mfs_garbage_collect(MFSDriver *mfsp) { RET_ON_ERROR(mfs_bank_write_header(mfsp, dbank, mfsp->current_counter)); /* The source bank is erased last.*/ - RET_ON_ERROR(mfs_bank_erase(mfsp, MFS_BANK_0)); + RET_ON_ERROR(mfs_bank_erase(mfsp, sbank)); return MFS_NO_ERROR; } @@ -1010,7 +1011,8 @@ mfs_error_t mfsWriteRecord(MFSDriver *mfsp, mfs_id_t id, } /* Checking for immediately (not compacted) available space.*/ - free = mfsp->config->bank_size - mfsp->next_offset; + free = (mfs_flash_get_bank_offset(mfsp, mfsp->current_bank) + + mfsp->config->bank_size) - mfsp->next_offset; if (required > free) { /* We need to perform a garbage collection, there is enough space but it has to be freed.*/ @@ -1097,7 +1099,8 @@ mfs_error_t mfsEraseRecord(MFSDriver *mfsp, mfs_id_t id) { } /* Checking for immediately (not compacted) available space.*/ - free = mfsp->config->bank_size - mfsp->next_offset; + free = (mfs_flash_get_bank_offset(mfsp, mfsp->current_bank) + + mfsp->config->bank_size) - mfsp->next_offset; if (required > free) { /* We need to perform a garbage collection, there is enough space but it has to be freed.*/ -- cgit v1.2.3