| diff --unified --recursive partimage-0.6.7_beta1.org/src/client/fs/fs_base.cpp partimage-0.6.7_beta1/src/client/fs/fs_base.cpp |
| --- partimage-0.6.7_beta1.org/src/client/fs/fs_base.cpp 2007-09-17 02:59:23.000000000 +0800 |
| +++ partimage-0.6.7_beta1/src/client/fs/fs_base.cpp 2007-10-08 16:51:29.000000000 +0800 |
| @@ -773,6 +773,7 @@ |
| QWORD qwFreeBlocksCount = 0; |
| QWORD i; |
| |
| + showDebug(1, "BITMAP: m_header.qwBlocksCount = %llu\n", m_header.qwBlocksCount); |
| for (i=0; i < m_header.qwBlocksCount; i++) |
| { |
| if (m_bitmap.isBitSet(i)) |
| diff --unified --recursive partimage-0.6.7_beta1.org/src/client/fs/fs_ext2.cpp partimage-0.6.7_beta1/src/client/fs/fs_ext2.cpp |
| --- partimage-0.6.7_beta1.org/src/client/fs/fs_ext2.cpp 2007-09-17 02:55:59.000000000 +0800 |
| +++ partimage-0.6.7_beta1/src/client/fs/fs_ext2.cpp 2007-10-08 18:21:03.000000000 +0800 |
| @@ -158,6 +158,7 @@ |
| m_info.dwTotalBlocksCount = Le32ToCpu(sb.s_blocks_count); |
| showDebug(1, "total blocks=%lu\n", m_info.dwTotalBlocksCount); |
| m_info.dwBlocksPerGroup = Le32ToCpu(sb.s_blocks_per_group); |
| + showDebug(1, "BlocksPerGroup=%lu\n", m_info.dwBlocksPerGroup); |
| |
| m_info.dwGroupsCount = (m_info.dwTotalBlocksCount - m_info.dwFirstBlock + m_info.dwBlocksPerGroup - 1) / Le32ToCpu(sb.s_blocks_per_group); |
| showDebug(1, "groups=%lu\n", m_info.dwGroupsCount); |
| @@ -211,6 +212,7 @@ |
| DWORD dwBit, dwByte; |
| DWORD dwExt2DataBlock; |
| char *cPtr; |
| + int group = 0; |
| |
| // debug |
| DWORD dwUsed; |
| @@ -228,6 +230,7 @@ |
| |
| // init bitmap size |
| nRes = m_bitmap.init(m_header.qwBitmapSize); |
| + showDebug(1, "m_bitmap.init(m_header.qwBitmapSize = %lu)\n", m_header.qwBitmapSize); |
| if (nRes == -1) |
| { |
| showDebug(1, "CExt2Part::readBitmap(): Error 002\n"); |
| @@ -236,6 +239,7 @@ |
| |
| // load group descriptors |
| desc = new CExt2GroupDesc[m_info.dwGroupsCount+m_info.dwDescPerBlock]; |
| + showDebug(1, "dwGroupsCount = %lu, m_info.dwDescPerBlock = %lu\n",m_info.dwGroupsCount, m_info.dwDescPerBlock); |
| if (!desc) |
| { |
| showDebug(1, "CExt2Part::readBitmap(): Error 003\n"); |
| @@ -243,6 +247,7 @@ |
| } |
| |
| // for each descriptor BLOCK (not group descriptor!) |
| + showDebug(1, "readData m_info.dwBlockSize = %lu\n", m_info.dwBlockSize); |
| for (cPtr=(char*)desc, i=0; i < m_info.dwDescBlocks; i++,cPtr+=m_info.dwBlockSize) |
| { |
| nRes = readData(cPtr, ((QWORD)m_info.dwBlockSize) * ((QWORD)(m_info.dwFirstBlock+1+i)), m_info.dwBlockSize); |
| @@ -255,7 +260,7 @@ |
| |
| dwUsed=0; |
| dwFree=0; |
| - |
| + showDebug(1, "m_info.dwBlocksPerGroup = %lu\n", m_info.dwBlocksPerGroup); |
| for (i = 0; i < m_info.dwGroupsCount; i++) |
| { |
| if (m_info.dwFirstBlock+((i+1)*m_info.dwBlocksPerGroup) > m_info.dwTotalBlocksCount) |
| @@ -267,8 +272,8 @@ |
| { |
| // -- read the bitmap block |
| errno = 0; |
| - nRes = readData(cTempBitmap+(i*m_info.dwBlockSize), ((QWORD)m_info.dwBlockSize) * |
| - ((QWORD)Le32ToCpu(desc[i].bg_block_bitmap)), m_info.dwBlockSize); |
| + nRes = readData(cTempBitmap+(i*(m_info.dwBlocksPerGroup/8)), ((QWORD)m_info.dwBlockSize) * |
| + ((QWORD)Le32ToCpu(desc[i].bg_block_bitmap)), (m_info.dwBlocksPerGroup/8)); |
| if (nRes == -1) |
| { |
| showDebug(1, "CExt2Part::readBitmap(): Error 005\n"); |
| @@ -278,7 +283,7 @@ |
| } |
| else |
| { |
| - memset(cTempBitmap+(i*m_info.dwBlockSize), 0, m_info.dwBlockSize); |
| + memset(cTempBitmap+(i*(m_info.dwBlocksPerGroup/8)), 0, (m_info.dwBlocksPerGroup/8)); |
| } |
| } |
| |
| @@ -302,22 +307,25 @@ |
| { |
| dwBit = dwExt2DataBlock % 8; |
| dwByte = (dwExt2DataBlock - dwBit) / 8; |
| + group = (dwExt2DataBlock/m_info.dwBlocksPerGroup); |
| |
| if ((cTempBitmap[dwByte] & (1 << dwBit)) != 0) |
| { |
| for (j=0; j < m_info.dwLogicalBlocksPerExt2Block; j++, i++) |
| m_bitmap.setBit(i, true); |
| + showDebug(3, "m_bitmap.setBit(%1u, true), g = %i\n", (i/4), group); |
| dwUsed++; |
| } |
| else |
| { |
| for (j=0; j < m_info.dwLogicalBlocksPerExt2Block; j++, i++) |
| m_bitmap.setBit(i, false); |
| + showDebug(3, "m_bitmap.setBit(%1u, false), g = %i\n", (i/4), group); |
| dwFree++; |
| } |
| } |
| |
| - //debugWin("used=%lu\nfree=%lu\ntotal=%lu",dwUsed,dwFree,dwUsed+dwFree); |
| + showDebug(1,"used=%lu\nfree=%lu\ntotal=%lu\n",dwUsed,dwFree,dwUsed+dwFree); |
| calculateSpaceFromBitmap(); |
| |
| //success_readBitmap: |