From d62f743549ffe8ef7d234116f5daa13fad15c201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sat, 19 Jan 2008 20:55:27 +0000 Subject: [PATCH] * Inode::_FreeStreamArray() kept one block it should have freed when the new size fell on a block boundary. * Removed newline from Inode::Remove() tracing. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23652 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/file_systems/bfs/Inode.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/file_systems/bfs/Inode.cpp b/src/add-ons/kernel/file_systems/bfs/Inode.cpp index a0745bea7a..b93a99d1b0 100644 --- a/src/add-ons/kernel/file_systems/bfs/Inode.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Inode.cpp @@ -68,7 +68,7 @@ class Remove : public AbstractTraceEntry { virtual void AddDump(char *buffer, size_t size) { - snprintf(buffer, size, "REMOVE %Ld (%p), \"%s\"\n", fID, fInode, + snprintf(buffer, size, "REMOVE %Ld (%p), \"%s\"", fID, fInode, fName); } @@ -1979,8 +1979,10 @@ Inode::_FreeStreamArray(Transaction &transaction, block_run *array, // determine the block_run to be freed if (newOffset > size && offset < size) { // free partial block_run (and update the original block_run) - run.start = array[i].start - + ((size - offset) >> fVolume->BlockShift()) + 1; + run.start = HOST_ENDIAN_TO_BFS_INT16(array[i].Start() + + ((size + fVolume->BlockSize() - 1 - offset) + >> fVolume->BlockShift())); + // round to next block array[i].length = HOST_ENDIAN_TO_BFS_INT16(run.Start() - array[i].Start()); run.length = HOST_ENDIAN_TO_BFS_INT16(run.Length()