I'll have to do a little research on this. It's been almost two years since I touched a real XP box. (See my forum signature.)
I have an old virtualbox image I can load up for experimenting. I'll do that later.
In the meantime, while you're in XP, go ahead and force a filesystem check on your D: drive. (Yes, it will run the same chkdsk at bootup again.) To force the check, go to My Computer, right-click the D: drive, and select Properties. Go to the Tools tab and click the Check Now button. In the popup window, check both options. It will then tell you need to reboot to perform the checks. Close all programs and reboot. The check will also do a surface scan for bad physical sectors.
You'll want to do the same thing on C: drive after
you've cleaned up some space. Yes, I know you're mounting that partition read-only under Linux. But, if you're not seeing all the chkdsk messages at bootup, you don't really know which partiton(s) are being checked. If I remember correctly, Windows won't let you run the chkdsk with all options unless you have at least 10% free space.
What I'm not sure of is how well the ntfs-3g driver works with native NTFS filesystem. Don't know if you're aware, but there is also a NTFS-3G filesystem. And, I'm not sure how well that filesystem "plays" with WindowsXP. So, I'll set up a virtual drive to be shared with Linux and XP and see what happens.