yaffs_find_gc_block is used to find a suitable block to gc,but the first ¡°for¡± loop that finding a prioritised block may have error. for (i = dev->internal_start_block; i <= dev->internal_end_block && !selected; i++) { if (bi->gc_prioritise) { prioritised_exist = 1; if (bi->block_state == YAFFS_BLOCK_STATE_FULL && yaffs_block_ok_for_gc(dev, bi)) { selected = i; prioritised = 1; } } For dev->internal_start_block may start from 0 and if block 0 could be gc . then select=0 so loop continues and passed block. As a result block 0 may seldom be gc or never be. If I¡¯m not right please correct me. --- Regards, Ezio