Mercurial > yaffs-ecoscentric
changeset 296:529c4272e03a
Prevent corner case of a block changing state during a partial gc
| author | charles |
|---|---|
| date | Wed, 29 Jul 2009 05:30:24 +0100 |
| parents | 7caef2cab5a1 |
| children | 22f72a12de73 |
| files | yaffs_guts.c |
| diffstat | 1 files changed, 3 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/yaffs_guts.c +++ b/yaffs_guts.c @@ -2969,7 +2969,6 @@ static int yaffs_GarbageCollectBlock(yaf isCheckpointBlock = (bi->blockState == YAFFS_BLOCK_STATE_CHECKPOINT); - bi->blockState = YAFFS_BLOCK_STATE_COLLECTING; T(YAFFS_TRACE_TRACING, (TSTR("Collecting block %d, in use %d, shrink %d, wholeBlock %d" TENDSTR), @@ -2980,6 +2979,9 @@ static int yaffs_GarbageCollectBlock(yaf /*yaffs_VerifyFreeChunks(dev); */ + if(bi->blockState == YAFFS_BLOCK_STATE_FULL) + bi->blockState = YAFFS_BLOCK_STATE_COLLECTING; + bi->hasShrinkHeader = 0; /* clear the flag so that the block can erase */ /* Take off the number of soft deleted entries because
