OZ 3.5.3. SL 5500.
I've debugged this as much as I can on my own, and here's what I've come up with:
This happens every time on each 'halt' and each hard reset (battery switch), and every other time (this may be a clue) on 'reboot'.
First the error, then I'll describe "every other time" a little better.
The error manifests itself as missing directories in my /media/card mount point. Sometimes I get this "ls: /media/card/packages Input/Output error", but all the other directories work fine. Sometimes I get no directories, even though "mount" shows it as mounted. If I get the first brand of error, dmesg contains the error "error: ext2_read_inode unable to read inode_block - inode = 75186, block = 303107." If the second brand of error happens, there are no unusual messages coming from /etc/sdcontrol in dmesg.
Remounting fixes these problems, except that certain symbolic links (in /usr/lib for instance) go away. Running ipkg-link mount fixes this.
Now for the definition of "every other time." If 'reboot' mounted everything correctly, then the next reboot (after a suspend, of course) will cause the error. If the error manifested itself, then suspending, remounting and 'reboot'ing will never cause the error.
A couple of observations I have made while debugging this: (this will not be new to many of you, but to me it was, so it might be helpful info to someone else)
1. If all partitions on your sd are unmounted (including swap) and you suspend or pop the sd out and then back in, it will automatically mount my ext2 partition.
2. rmmod sharp_mmcsd_m ALWAYS returns device or resource busy.
Now I open it up for outside help.