You will probably have to use Disk Warrior or the system CD to recover your data to another drive, and then repartition that drive to get it running again. Personally I would recover to another drive and throw the problematic drive away. Hard drives have a short life span, no need to keep around a device that is showing signs of failure.
My external harddrive got damaged while I was doing a system update. When I run disc utility for repair I can't mount it anymore because of a "b-tree." What does this mean and can I save my external harddrive?