From 85baf76e1a81bfc1f16a124b638615d4bf7f0746 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 28 Sep 2006 10:46:37 +0000 Subject: [PATCH] The computation of the number of blocks in the last allocation group was wrong; it would usually be one block too small - this fixes bug #659. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18955 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp b/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp index 3cb748130d..2c3b312e3b 100644 --- a/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp +++ b/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp @@ -420,7 +420,7 @@ BlockAllocator::InitializeAndClearBitmap(Transaction &transaction) // the last allocation group may contain less blocks than the others if (i == fNumGroups - 1) { fGroups[i].fNumBits = fVolume->NumBlocks() - i * numBits; - fGroups[i].fNumBlocks = fGroups[i].fNumBits >> (blockShift + 3); + fGroups[i].fNumBlocks = 1 + ((fGroups[i].NumBits() - 1) >> (blockShift + 3)); } else { fGroups[i].fNumBits = numBits; fGroups[i].fNumBlocks = blocks; @@ -475,7 +475,7 @@ BlockAllocator::_Initialize(BlockAllocator *allocator) // the last allocation group may contain less blocks than the others if (i == num - 1) { groups[i].fNumBits = volume->NumBlocks() - i * numBits; - groups[i].fNumBlocks = groups[i].fNumBits >> (blockShift + 3); + groups[i].fNumBlocks = 1 + ((groups[i].NumBits() - 1) >> (blockShift + 3)); } else { groups[i].fNumBits = numBits; groups[i].fNumBlocks = blocks;