For a SATA/PATA HDD, this would be the normal procedure: http://www.sjvs.nl/?p=12
But a customer of mine has an old server with actual SCSI drives. I have tried re-writing the sector with dd
to no avail; I keep getting the I/O error as per this quote from the above article: "I have a case were using dd to overwrite the sector produces an IO error and no reallocation. But using hpdparm works and forces the reallocation. Amazing."
How do I skip the kernel's block layer and force the drive to rewrite a specific sector? Lots of Googling hasn't found an answer.
PS -- SMART on SCSI HDDs works differently and doesn't show the reallocated sector count.
You can try sg3_utils for linux. It can do many things with SCSI/SAS disks. For blocks reassign it have "sg_reassign" utility.