aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2017-11-16 17:59:45 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2017-11-16 17:59:45 +0000
commit450e9e24667e0a9d8fd685c02c028d3f0fc57622 (patch)
treeb492b5d817c08aac1f60b2c9a2e964289ab5f898 /os/hal
parentc275ed26e3d71f45a18a5edb79d6e1f10fa87b9f (diff)
downloadChibiOS-450e9e24667e0a9d8fd685c02c028d3f0fc57622.tar.gz
ChibiOS-450e9e24667e0a9d8fd685c02c028d3f0fc57622.tar.bz2
ChibiOS-450e9e24667e0a9d8fd685c02c028d3f0fc57622.zip
More debug on MFS.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11022 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/hal')
-rw-r--r--os/hal/lib/complex/mfs/mfs.c13
1 files changed, 8 insertions, 5 deletions
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.*/