blob: adb102a844ecc4466e8c1ef458c0d6b06944890b [file] [log] [blame]
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: