I have three enterprise level SSDs from different machines running Windows XP Embedded. Two of them refuse to boot into Windows. Each SSD has two partitions, one for Windows and one for data.

I have them connected into an external PATA to USB adapter running on a Linux machine. In Ubuntu 11.10 they mount just fine. I can see the data sturctures and open files. Running df or starting the Disk Utility shows both partitions in the correct size, with proper flags and as NTFS. But when I start gparted it reports the first partition much smaller than it should be and the rest of the disc as unallocated. Running testdisk, the application recognizes the disk using an EFI GPT partition table, instead of the Intel one. Testdisk reports the partition sizes correctly as well. This applies to both problematic disks.

Running the testdisk analysis doesn't yield much info. There are warnings of incorrect number of heads/cycles and sectors per track and some mention of CHS and LBA not matching. This applies to all three disks. The non-faulty disk shows properly in gparted.

What can cause this sort of discrepancy between Disk Utility/df and gparted when scanning the partition sizes?

Are there any tools I could use to fix this without losing data on the SSDs? Or should I just copy all the data from the SSDs and reformat them?

Is there any tools I could use to scan all files on the SSDs to see if they are corrupt or not?

Any help would be appreciated!