What is a bad block?:
A bad block is a sector on a flash memory disk that cannot be used due to permanent damage (or an OS inability to successfully access it). Sometimes sectors get stuck in a digital state that cannot be reversed. Failed flash memory transistors can be a cause. It is usually detected by a disk utility software on Unix-like systems. When found, these programs may mark the sectors unusable (all file systems contain provisions for bad-sector marks) and the operating system skips them in the future.
Will this cause a problem with my G-Tablet?:
Yes and No. Normally a few small bad blocks in the nand will not cause an issue, but get to many bad blocks and this takes away space that is needed for the system to properly function.
Could this be causing me to boot loop when I flash ICS?:
The bad blocks can make installing a large rom like ICS very difficult. Basically ICS really pushes the size limits of our system partition as it is, so when you have bad blocks that makes your system partition even smaller than normal, and if it gets too small because of many bad blocks it can cause the hang at the birds because the installer is trying to flash more data to the system partition than your tablet can hold so it corrupts some of the data being flashed and or data that is already present and causes the hang. I found this out with earlier versions of our rom because I have bad blocks on my G-Tablet also.
Can I repair bad blocks?:
No. Bad blocks are currently un-repairable once they go bad they stay bad.
So why have I been told to flash to stock to repair bad blocks then?:
Flashing to stock does not repair bad blocks, but what it does do is it forces the system to recognize and flag the bad blocks, so the system does not try so store data to those areas.
So is there a chance that I will never be able to run ICS?:
While rare, this is a possibility depending on how many bad blocks you actually have and where in the nand. ICS is a large OS compared to older versions of Android, and it pushes the limits of our G-Tablet. We are trying to keep the Rom as small as possible without loosing functionality just for this reason, but there is only so much we can do.
How can I tell if I have bad blocks?:
Running dmesg in terminal emulator will show you a log and in the log it will tell you if you have bad blocks. You can also pull a logcat via ADB.
If you have bad blocks, this is similar to what you will see in terminal emulator after running the dmesg command (this is from my G-Tablet):
- <7>[ 3.381561] yaffs: Attempting MTD mount of 31.3,”mtdblock3″
- <7>[ 3.395419] yaffs: block 324 is bad
- <7>[ 3.396054] yaffs: block 338 is bad
- <7>[ 3.421303] yaffs: block 979 is bad
- <7>[ 3.422226] yaffs: block 999 is bad
- <7>[ 3.428016] yaffs: block 1145 is bad
- <7>[ 3.440420] yaffs: block 1460 is bad
- <7>[ 3.440601] yaffs: block 1461 is bad
- <7>[ 3.450985] yaffs: block 1723 is bad
- <7>[ 3.468428] yaffs: block 2144 is bad
- <7>[ 3.468549] yaffs: block 2145 is bad
- <7>[ 3.476188] yaffs: block 2322 is bad
- <7>[ 8.027378] yaffs: yaffs_read_super: is_checkpointed 0
- <6>[ 8.072853] yaffs: dev is 32505860 name is “mtdblock4” rw
- <6>[ 8.072945] yaffs: passed flags “”
- <7>[ 8.073040] yaffs: Attempting MTD mount of 31.4,”mtdblock4″
- <7>[ 8.088393] yaffs: block 350 is bad
- <7>[ 8.091995] yaffs: block 432 is bad
- <7>[ 8.095155] yaffs: block 504 is bad