It was mentioned what it means. However, I would point out that obtaining a useful life also relies on error correction, where there will always be error correction bits as well as spare area used. If error correction is needed after a read, that will slow down the entire read. I'm not an error correction expert, but I do understand that once an error is detected, it will have to go through an error correction algorithm to reconstruct the proper data. I'm not sure how much this affects the performance. It might not matter as much with a SATA drive where the interface speed is a limiting factor, but it may matter with many of the newer interfaces that are much faster.
There are also a lot of variables. Quite a few drives use a single-level cell cache to help speed things up and to help with reliability. A lot of the 3D NAND flash is more reliable, although I don't understand the physics behind it.
The common practice in the industry (each company may have their own secret sauce on top of the common algorithm):
1. You do a typical read with data, wrap around with checksum so you know if your data is decoded correctly or not + extra data that helps you correct the problem. ECC / LDPC has a "strength" that is typically measured in how many bits of error you can correct, some stronger / more efficient one will correct very well "most of the time" but some will fail, while others will not be as efficient but will always correct to the performance it guaranteed. These days we are using the correct very well "most of the time" but will fail some version, and rely on other stuff to help us with the "rare" incident that they cannot correct.
2. When the ECC fail, the controller will send command down to the NAND to tell it to read the "soft" bit. Basically sometimes when the 1/0 are decided it is a toss up between the 1s and 0s, so these "soft" bits tells you whether it is more like a 1 or a 0, and help the controller to try again and decide which one is more likely, and make it a first line of recovery.
3. If that still fail, it will start trying to adjust the voltage threshold that decide whether a bit is 1 or 0, basically swing it back and forth further and further away from original to see if they can get a good guess. This is due to the nature of how "wear" happens as the value can go slightly above or below spec when NAND age, so the guessing will help in some situation. This can be a trial and error up to tens but not hundreds of times, depends on what customer wants.
4. If that swinging still fail, then start reading every single analog voltage plot of the whole block and then run some statistical analysis to see where the threshold should be, this will be like using a very slow computer to do some big math calculation (because it doesn't happen a lot so nobody spend money building the performance in the cheap controller), then try again to see if it helps.
5. It is time to bring out the secret sauce, every company does it differently. I can tell you but I have to kill you.
6. Still failing, it is time to use the internal RAID, read between 7 to 31 other chips to raid the data together to guess what you are missing. When you are getting to this point you need to decide whether to re-allocate this sector / page to somewhere else and mark this block BAD.
7. If it runs out of reserved block then it is time to make the drive read only and drive fail.
The above is assuming the drive is performing as designed (did not run into an unknown bug, and manufactured with parts that didn't get premature failure). If you have a bug in the firmware or bad parts all bets are off, you have to fix it or you can go out of business (OCZ anyone?)
Since ECC is so important, it is one of the deciding factor on how long a drive will last. The same drive that failed and died would likely have been alive if the same NAND was paired with a stronger ECC algorithm. NANDs are getting worse every generation and ECC is getting stronger every generation to compensate for it. Life is typically measured as amount of write, but it correlate to reserved spare blocks / reallocate blocks.