For PR 2163 - RFS File System - fix group search algorithm bug

This is for the RFS file system. There is a bug in the group search
algorithm where it will skip groups, causing blocks to remain
unallocated. This is dependant on the size of the blocks and number
of blocks in a group, so it does not always show up. The fix corrects
the skipping of groups during the search, allowing all of the blocks
to be found.
This commit is contained in:
Alan Cudmore
2013-12-18 11:39:19 -05:00
committed by Chris Johns
parent 540a63536c
commit e60b7b1b4f

View File

@@ -232,10 +232,24 @@ rtems_rfs_group_bitmap_alloc (rtems_rfs_file_system* fs,
return 0;
}
/*
* If we are still looking back and forth around the
* group_start, then alternate the direction and
* increment the offset on every other iteration.
* Otherwise we are marching through the groups, so just
* increment the offset.
*/
if (updown)
{
direction = direction > 0 ? -1 : 1;
if ( direction == -1 )
offset++;
}
else
{
offset++;
}
offset++;
}
if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))