From 91cf85a6c129e7f7cf60db6330ba602d3c4c8c89 Mon Sep 17 00:00:00 2001 From: Jonathan Blanchard Date: Thu, 13 Nov 2025 10:42:39 -0500 Subject: [PATCH 1/2] _fx_fault_tolerant_cleanup_FAT_chain(): Add checks to prevent starting a new cluster deletion session in some corner cases where the end of the chain is reached. --- common/src/fx_fault_tolerant_cleanup_FAT_chain.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/common/src/fx_fault_tolerant_cleanup_FAT_chain.c b/common/src/fx_fault_tolerant_cleanup_FAT_chain.c index 9929ae9..49370a0 100644 --- a/common/src/fx_fault_tolerant_cleanup_FAT_chain.c +++ b/common/src/fx_fault_tolerant_cleanup_FAT_chain.c @@ -207,7 +207,7 @@ ULONG last_FAT_sector; /* At this point, the head_cluster points to the cluster chain that is to be removed. */ - /* Tail cluster points to the back of the origianal FAT chain where the new chain is attached to. + /* Tail cluster points to the back of the original FAT chain where the new chain is attached to. The remove process terminates once this cluster is encountered. */ tail_cluster = _fx_utility_32_unsigned_read((UCHAR *)&FAT_chain -> fx_fault_tolerant_FAT_chain_insertion_back); @@ -262,7 +262,10 @@ ULONG last_FAT_sector; { if (head_cluster == next_session || next_session == FX_FREE_CLUSTER) { - next_session = next_cluster; + /* Do not start another session if this is the end of the chain. */ + if(next_cluster != tail_cluster) { + next_session = next_cluster; + } } break; } @@ -277,7 +280,10 @@ ULONG last_FAT_sector; /* Get next session. */ if (cache_count == cache_max) { - next_session = next_cluster; + /* Do not start another session if this is the end of the chain. */ + if(next_cluster != tail_cluster) { + next_session = next_cluster; + } } /* Update head cluster and next session into log file. */ From 50c0aca55b246d684e1be617cd98348b6f7e5e66 Mon Sep 17 00:00:00 2001 From: Jonathan Blanchard Date: Mon, 9 Feb 2026 16:45:50 -0500 Subject: [PATCH 2/2] Fixed formatting of previous commit. --- common/src/fx_fault_tolerant_cleanup_FAT_chain.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/common/src/fx_fault_tolerant_cleanup_FAT_chain.c b/common/src/fx_fault_tolerant_cleanup_FAT_chain.c index 49370a0..ebd8176 100644 --- a/common/src/fx_fault_tolerant_cleanup_FAT_chain.c +++ b/common/src/fx_fault_tolerant_cleanup_FAT_chain.c @@ -263,7 +263,8 @@ ULONG last_FAT_sector; if (head_cluster == next_session || next_session == FX_FREE_CLUSTER) { /* Do not start another session if this is the end of the chain. */ - if(next_cluster != tail_cluster) { + if (next_cluster != tail_cluster) + { next_session = next_cluster; } } @@ -281,7 +282,8 @@ ULONG last_FAT_sector; if (cache_count == cache_max) { /* Do not start another session if this is the end of the chain. */ - if(next_cluster != tail_cluster) { + if (next_cluster != tail_cluster) + { next_session = next_cluster; } }