It's almost certainly broken, sorry.
This is one of the biggest problems with Apps (also cache) to SD, and almost certainly the reason why Google haven't implemented it, despite it being something you can pretty much do with a symlink (takes about 5 seconds to enter the command in the shell).
Flash memory has a finite (i.e. limited) number of erase-write cycles before they break. Typically around 1,000,000 for a given sector (source: http://en.wikipedia.org/wiki/Flash_memory). As apps (and cache) can write thousands of times a second to their app space (or cache) this can reduce the life of an SD card to weeks in extreme cases. When they break, they break, and there's nothing you can do to get it working again. Your only solution is to buy a new SD card, and restore a backup of your apps, or install them all again manually.