It's over a month old thread now, BUT...
These three bits of information:
Sector Sizes: 512 bytes logical, 4096 bytes physical
197 Current_Pending_Sector -O--C- 100 100 000 - 16
198 Offline_Uncorrectable ----C- 100 100 000 - 16
40 51 00 ff ff ff 0f Error: UNC at LBA = 0x0fffffff = 268435455
Well tell you that all that's wrong are two bad sectors, and what the
LBA is. The LBA is 512 byte based, so to erase one sector you have to
erase all 8 LBAs that apply to it. So dd by itself won't work, you'll
have to do bs=4096, but now the seek value is 4096 byte based, not 512
byte based so you have to convert the LBA value above to 4096 bytes,
and then write 1 4096 byte sector. I don't, complicated. There is also
a way to do this with hdparm but I haven't tried it. If you try to
write bs=512 count=8, you'll actually cause a 512 byte write first,
the drive will get that command and try to do read-modify-write, and
you'll get a read error, even though you're writing.
Anyway, 2 bad sectors isn't a big deal. What you could do is something
like dd if=/dev/zero of=/dev/sdX bs=1M and that'll blow away
everything on the drive, and any bad sectors will be remapped
automatically. Especially considering that there's no reference for
the LBA of the other bad sector. To get that you'd either have to
stumble upon it, or do a smartctl -t long, and then it'll show up in
the self-test log section of -a or -x next to the aborted test.
Chris Murphy