This can all be avoided if you flash either a) without repartition or , if you have to repartition b) flash a complete firmware, that definitely contains dbdata.rfs and cache.rfs in the .tar file. Most of the 3-file ones contain them.
This problem arises when you flash an incomplete firmware, with repartition. Then you tell your phone to make a partition for dbdata, and then you flash a firmware that doesn't contain dbdata.rfs! Therefore, the mounting of stl10, which is supposed to go to dbdata, fails miserably.
It's as simple as that. If you want to flash a certain firmware, make sure you flash a complete/full one, otherwise, flash it WITHOUT repartition. Samsung hasn't changed the partition table since the old Eclairs, it's always the one corresponding to 512.pit.
The fix of this thread just fills in the gap that stl10 is looking for, by giving the phone the dbdata.rfs file, which would be there if you hadn't destroyed it by repartitioning, or if the firmware you were trying to flash was complete and contained it.
So be careful about what you flash. Most firmwares from the Samsung servers that are bundled in one tar file, do NOT contain dbdata, so you should NOT repartition if you want to flash them. That is the reason that the instructions on samfirmware.com say not to tick repartition with one file. But even the 3-file ones can be incomplete some times. Just look inside the tars before you plug them into Odin, and see if dbdata.rfs and cache.rfs are there.
Having said all that, props to the OP for raising the issue and saving a lot of time and tears