Have you tried "fsck"? It is chkdsk but for Linux. Also, you should *NEVER* run fsck when the disc is mounted, instead, you should get a live-cd and run it,
So, for example, your linux partition is /dev/sdb1, type this on the command-line:
It must not be mounted and you have to run fsck as root.