Ticket #8123: check_unused.patch

File check_unused.patch, 1.4 KB (added by ahenriksson, 12 years ago)
  • src/system/kernel/cache/block_cache.cpp

    diff --git a/src/system/kernel/cache/block_cache.cpp b/src/system/kernel/cache/block_cache.cpp
    index b49bf6e..e0c258b 100644
    a b BlockWriter::_BlockDone(cached_block* block, hash_iterator* iterator)  
    12681268            fDeletedTransaction = true;
    12691269        }
    12701270    }
    1271     if (block->transaction == NULL && block->ref_count == 0) {
     1271    if (block->transaction == NULL && block->ref_count == 0 && !block->unused) {
    12721272        // the block is no longer used
    12731273        block->unused = true;
    12741274        fCache->unused_blocks.Add(block);
    put_cached_block(block_cache* cache, cached_block* block)  
    17611761            cache->RemoveBlock(block);
    17621762        } else {
    17631763            // put this block in the list of unused blocks
     1764            ASSERT(!block->unused);
    17641765            block->unused = true;
     1766
    17651767            ASSERT(block->original_data == NULL
    17661768                && block->parent_data == NULL);
    17671769            cache->unused_blocks.Add(block);
  • src/tools/fs_shell/block_cache.cpp

    diff --git a/src/tools/fs_shell/block_cache.cpp b/src/tools/fs_shell/block_cache.cpp
    index 78f69d2..2f47a09 100644
    a b write_cached_block(block_cache* cache, cached_block* block,  
    927927            }
    928928        }
    929929    }
    930     if (block->transaction == NULL && block->ref_count == 0) {
     930    if (block->transaction == NULL && block->ref_count == 0 && !block->unused) {
    931931        // the block is no longer used
    932932        block->unused = true;
    933933        cache->unused_blocks.Add(block);