getting oddball boundary quirk reading Samsung disk

Dieter freebsd at sopwith.solgatos.com
Mon Feb 2 21:08:34 PST 2009


I'm attempting to dig my way out of the Seagate 7200.11 firmware disaster.
Need a non-7200.11 place to store my data before messing with the drives.
Trying a Samsung.

disk: Samsung HD103UJ 1TB SATA
controller: nforce4-ultra
FreeBSD 7.0 amd64

Brand new disk.  Running a few tests before entrusting data to it.
I read the entire disk with dd of=/dev/null, it ran fine.
I wrote the entire disk with 0x55, it ran fine.
I read the entire disk with dd piped to hexdump, I get quirks
at 2 oddball spots.  Reading 1 sector at a time works fine.
Reading 2 sectors gives i/o error.  Repeatable.

If there was a boundary quirk (like the one at the lba48 boundary
on Seagates) I would expect an error the first time I read the
disk (before writing 0x55).

Read ahead is listed as supported and enabled, so the data should
be in the disk's cache when reading with bs=1024.


# dd if=/dev/ad6 bs=512 skip=1936787900 count=1 | hexdump -C
1+0 records in
1+0 records out
512 bytes transferred in 0.000160 secs (3200423 bytes/sec)
00000000  55 55 55 55 55 55 55 55  55 55 55 55 55 55 55 55  |UUUUUUUUUUUUUUUU|
*
00000200
# dd if=/dev/ad6 bs=512 skip=1936787901 count=1 | hexdump -C
1+0 records in
1+0 records out
512 bytes transferred in 0.000155 secs (3303821 bytes/sec)
00000000  55 55 55 55 55 55 55 55  55 55 55 55 55 55 55 55  |UUUUUUUUUUUUUUUU|
*
00000200
# dd if=/dev/ad6 bs=1024 skip=1936787900 count=1 | hexdump -C
dd: /dev/ad6: Input/output error
0+0 records in
0+0 records out
0 bytes transferred in 0.000104 secs (0 bytes/sec)
# 


# dd if=/dev/ad6 bs=512 skip=1939213518 count=1 | hexdump -C
1+0 records in
1+0 records out
512 bytes transferred in 0.000152 secs (3365962 bytes/sec)
00000000  55 55 55 55 55 55 55 55  55 55 55 55 55 55 55 55  |UUUUUUUUUUUUUUUU|
*
00000200
# dd if=/dev/ad6 bs=512 skip=1939213519 count=1 | hexdump -C
1+0 records in
1+0 records out
512 bytes transferred in 0.000260 secs (1970168 bytes/sec)
00000000  55 55 55 55 55 55 55 55  55 55 55 55 55 55 55 55  |UUUUUUUUUUUUUUUU|
*
00000200
# dd if=/dev/ad6 bs=1024 skip=1939213518 count=1 | hexdump -C
dd: /dev/ad6: Input/output error
0+0 records in
0+0 records out
0 bytes transferred in 0.000101 secs (0 bytes/sec)
# 

ad6: FAILURE - READ_DMA48 status=51<READY,DSC,ERROR> error=40<UNCORRECTABLE> LBA=1936787980
ad6: FAILURE - READ_DMA48 status=51<READY,DSC,ERROR> error=40<UNCORRECTABLE> LBA=1939213518
ad6: FAILURE - READ_DMA48 status=51<READY,DSC,ERROR> error=40<UNCORRECTABLE> LBA=1939213518

Running the test again isn't generating additional errors to console/dmesg.

I ran the same incoming inspection test on Seagates, including
a couple of 1 TB (exact same number of sectors as the Samsung),
and it ran fine.


More information about the freebsd-questions mailing list