Hey all, I just bumped into this problem too, with Ubuntu 9.04 unr installed 
fresh from a usb stick, used sda1 as / (ext2), and a sd card for /home (ext4). 
After my battery was empty my SD disk crashed upon resume.
obviously the problem is a lost partition table:
output of 'sudo fdisk -l'

Schijf /dev/mmcblk0: 8201 MB, 8201961472 bytes
4 koppen, 16 sectoren/spoor, 250304 cilinders
Eenheid = cilinders van 64 * 512 = 32768 bytes
Schijf-ID: 0x00000000

Schijf /dev/mmcblk0 bevat geen geldige partitietabel
(is dutch for: Disk /dev/mmcblk0 does not contain a valid partition table)

Googling around I found that this problem hurt other people with other systems 
as well, especially the openmoko and OLPC community, see:
http://dev.laptop.org/ticket/6532
http://docs.openmoko.org/trac/ticket/1802

As far as I understood the resume action does something tricky: it
revives the SD card and checks whether the card is still in the slot,
only it does the check too quick, the power is not entirely restored
yet, what results in removal of the disk from the system, although the
disk is actually still in and mounted resulting in overwriting of the
partition table:

***
dsaxena in http://dev.laptop.org/ticket/6532:
Upon coming out of resume, the SD code, with CONFIG_MMC_UNSAFE_SUSPEND enabled, 
checks to see if there is a card plugged into the system and whether that card 
is the same as the one that was plugged into the system at suspend time. This 
is accomplished by reading the card ID of the device and for some reason, very 
possibly #1339, we fail this detection. In this case, the kernel removes the 
old device from the system and in this execution path, the partition 
information for this device is zeroed.

Even though the device is removed, the device is still mounted and upon 
unmount, ext2 syncs the superblock, even if the file system is sync'd 
beforehand. The superblock is block 0 of the partition and the block layer adds 
to this the partition start offset before submitting the write to the lower 
layers. As the partition information has already been zeroed out, we end up 
writing to block 0 of the disk itself, overwriting the partition table and the 
geometry information. I've verified this by both gathering debug output and 
'dd' + 'hexdump' of corrupted and uncorrupted media. 
***

The proposed fix was to build a delay of 400 ms in the resume process.
Unfortunatley I am not really a programmer, so I have not really a clue
how to do that yet.


In the meanwhile another (dirty) workaround I found from polarbaer in 
http://docs.openmoko.org/trac/ticket/1802:

***
I have the same problem with a 8GB SanDisk?-card, even when the 2008.8 is 
installed on the micro-SC. Since I have a Qtopia in the flash (to have a stable 
phone) I backed up the partitiontable via
dd if=/dev/mmcblk0 of=/home/root/backup.img bs=512 count=1
and put the restore-command
dd of=/dev/mmcblk0 if=/home/root/backup.img bs=512 count=1
to any bootup-script in Qtopia, in my case to the top of:
/etc/init.d/mountall.sh
so it fixes itself once I boot my Qtopia.

Not a fix, but at least a very bloody workaround.
***

** Bug watch added: OLPC Development #6532
   http://dev.laptop.org/ticket/6532

** Bug watch added: docs.openmoko.org/trac/ #1802
   http://docs.openmoko.org/trac/ticket/1802

-- 
SD Card containing /home corrupted on resume
https://bugs.launchpad.net/bugs/342096
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to