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