Hard drives and SSDs both keep a pool of spare blocks so that they can remain functional after having to retire some defective blocks from use. This spare pool tends to be much larger for SSDs. Ordinary IO doesn't convey anything about whether a block had to be retired in the process, but there are SMART indicators that track this stuff.
Is there a way for the drive to tell the fs that a block is bad? Or does the drive simply keep a bunch of blocks apart just in case?