My build VM got corrupt today and I was on the verge of losing my temporary changes scattered across 4 different code branches. I googled a while for a solution and and I found the following links very useful:
Additionally, using TestDisk I was able to copy all my modified code even before I tried fixing the disk. TestDisk came to my rescue once before as well when my 1 TB NTFS formatted externally powered disk was not getting detected anywhere.
Another interesting article on how to handle bad blocks on hard disk.