Thanks for the suggestions.
I managed to fix it by doing a low level copy of the disk onto another disk. It seemed to have no errors reading, it was just totally unable to write to it!
It was a SSD BTW (probably should have mentioned)
I used a program called ddrescue basically as such..
ddrescue -n /dev/hda /dev/hdb logfile
ddrescue -d -r3 /dev/hda /dev/hdb logfile
e2fsck -v -f /dev/hdb1
e2fsck -v -f /dev/hdb2
I could then boot from the 2nd (copied to) disk and all was good