From 2dbad0651eadd7dbc96ae3164c4f71974ecf3599 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 26 Jun 2009 13:47:13 +0000 Subject: [PATCH] * Fixed two bugs in CheckBlocks(), might help with bug #4042. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31252 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp b/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp index b3dcd55d82..af6a3cdb37 100644 --- a/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp +++ b/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp @@ -1514,7 +1514,7 @@ BlockAllocator::CheckBlocks(off_t start, off_t length, bool allocated) return B_BAD_VALUE; uint32 group = start >> fVolume->AllocationGroupShift(); - uint32 groupBlock = start % (fVolume->BlockSize() << 3); + uint32 groupBlock = start / (fVolume->BlockSize() << 3); uint32 blockOffset = start % fVolume->BlockSize(); AllocationBlock cached(fVolume); @@ -1530,6 +1530,8 @@ BlockAllocator::CheckBlocks(off_t start, off_t length, bool allocated) } } + blockOffset = 0; + if (++groupBlock >= fGroups[group].NumBlocks()) { groupBlock = 0; group++;