We upgraded our Droids to 2.2 today, and while one upgrade went fine, the other went not so fine. As in, reboot loop hell not so fine.
While it was up and barely responsive I noticed that there was a message about an operation being performed on the SD card, so I pulled it out and restarted. Droid worked just fine without the SD Card — no lag, all the apps were there, no crashes/reboots, etc.
Put the SD card back in, original problems happen. Phone is completely unusable.
Ok, I figure I’ll just back up the SD card and format it then use it again in my Droid. I removed the SD card and mounted it on my Mac in a USB adapter, drug the folder over, then watched as the number of files that needed to be copied slowly crept into the 10s of thousands.
Which, as you might guess, ain’t right.
After a little exploring, I discovered that /DCIM/Camera contained a directory /DCIM/Camera/Camera which had the exact same files as /DCIM/Camera. Including a subdirectory named “Camera”. Turtles all the way down means the SD card check probably was consuming all ram/cpu on the Droid and causing the crash/reboot.
Luckily the fix is simple — copy everything *except* the Camera sub directory to another file system, delete /DCIM, and re-use the card.
That being said, it’s 2010, why do we still have trivial inode errors in *nix filesystems? (I’m looking at you, Rubin. Seriously, wtf?)