I am writing a script and I have a few questions about the inner workings of the TRIM command. If TRIM is issued for an entirely empty (zeroed) erase block, does the garbage collector still delete the block? I would like to be able to issue TRIM for large blocks on the ssd, but my concern is that this would lead to unnecessary wear on blocks that are already empty.
On the other hand, if I don't issue TRIM on empty blocks that were previously used by the filesystem (say, parts of a file that contained only zeros), is there any overhead when writing meaningful data to these blocks? In other words, is the ssd "smart" enough to not perform a read-modify-write cycle since the block is already in its "ground" state?
Is this controller dependent (I mostly care about the new sandforce)?