I had a thread here a couple of years ago about an SSD I had from around 2009 that had stopped working in normal mode due to a power failure, but was still accessible in 'engineering mode'.
https://forum.hddguru.com/viewtopic.php?t=35428Briefly it was a 256GB indilinx barefoot with sansung NANDs. The OpenSSD project works with this controller and I was able to dump the drive data to an image by hacking this code somewhat. It happened that logical page numbers were written to the last in each group of 128 16kb pages. I built a mapped (translated) image from this and can mount it with linux (its a hfs plus volume).
However of the 16M logical pages in the drive about 600k have more than one physical entry in the physical->logical page number area. In other words 600k LPNs point to more than one physical block. So I don't know which one to choose.
When I mount it I can descend some directories and access some files but not all, and not the areas I want to. So its nearly there but no cigar.
I suspect the LPNs I am reading were actually originally used for garbage collection, and that there are map file blocks on the image, but I can't find them yet. I wondered if anyone had any knowledge about this kind of thing. I have made an interesting bitmap of the drive although how much I can infer from it I don't know. Its here:
http://www.filedropper.com/ppmfile2rearrI'll try to upload it here but it might be too big.
I made it by taking each 16kb block and averaging the value of them looking at them as 32 bit words, since I was looking for addressing info which is in 32 bit words.
The horizontal white lines I inserted, the vertical ones are the area where the LPN information is stored (because the data after the 1k or so of address info is 0xFF for the rest of the 16k block). The zone near the bottom of mainly black is interesting. I wonder if this is 32 banks (chips) of a log structured file system with the empty section the lower black area (although why not white for 0xffffffff I don't know). There are several elements of this image that I am not sure of their meaning.
Anyway I wonder given what I have found, if anyone might know more about it. IE in this kind of device do you usually find a translation table in a single 'chunk' of data, or spread all over the place, any techniques to find it etc. If I had a sequence number for the LBA containing blocks, I could choose the most recent, but I dont seem to be able to see that at all. I'll write a few more tech details in another post.
TIA, Pete