Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Jan 2000 10:31:43 +1100
From:      Peter Jeremy <peter.jeremy@alcatel.com.au>
To:        freebsd-current@FreeBSD.ORG
Subject:   ATA driver problems
Message-ID:  <00Jan6.103145est.40326@border.alcanet.com.au>

next in thread | raw e-mail | index | archive | help
Yesterday I updated from a pre-signal-change -current to something closer
to the present (cvs-cur 5961 - about last Monday, to be precise).

Every night, I run "dd if=/dev/rwdXc of=/dev/null bs=64k" on both of
my disks (I trim the output and merge it with a number of other
systems).  I forgot to update the wd to ad and last night it reported
errors.  I was expecting:

gsmx07:wd0:91746+1 records in
gsmx07:wd0:91746+1 records out
gsmx07:wd0:6012679680 bytes transferred
gsmx07:wd2:19561+1 records in
gsmx07:wd2:19561+1 records out
gsmx07:wd2:1281950208 bytes transferred

But instead I got:
gsmx07:wd0:dd: /dev/rwd0c: Invalid argument
gsmx07:wd0:91747+0 records in
gsmx07:wd0:91747+0 records out
gsmx07:wd0:6012731392 bytes transferred
gsmx07:wd2:dd: /dev/rwd2c: Input/output error
gsmx07:wd2:19561+0 records in
gsmx07:wd2:19561+0 records out
gsmx07:wd2:1281949696 bytes transferred

At about the same time, the following message appeared in /var/log/messages:
/kernel: ad2: HARD READ ERROR blk# 2503871
/kernel: ad2: HARD READ ERROR blk# 2503871 status=59 error=10
/kernel: ad2: DMA problem encountered, fallback to PIO mode

I just tried repeating it with ad0 instead of wd0 and got the same thing.
I don't want to repeat it with ad2 since there doesn't appear to be any
way to re-enable DMA short of rebooting [or maybe that patch hasn't
arrived here yet].

This suggests that there are two separate problems:
1) An I/O request for a block that entends beyond the end of the physical
   slice will abort with EINVAL, rather than returning a partial block.
2) There seems to be an off-by-1 error in the size reported by my
   Fireball (or maybe in the request handling), causing it to report
   an I/O error on the last sector.

The first problem would seem to be a bug in the ata driver, since the
behaviour on other Unices is to return a partial block.  (And this
might be related to the difficulties Brian Feldman is reporting).

I'm not sure about the second problem - all I can say if that the wd
driver saw the same number of sectors and the bytes read from the disk
matches the number of sectors in the slices.

Does anyone have any ideas?

The disk-related probe messages are:

ata-pci0: <Intel PIIX4 ATA controller> at device 7.1 on pci0
ata-pci0: Busmastering DMA supported
ata0 at 0x01f0 irq 14 on ata-pci0
ata1 at 0x0170 irq 15 on ata-pci0
...
ata-isa0: already registered as ata0
ata-isa1: already registered as ata1
...
ad0: <FUJITSU MPB3064ATU E/4010> ATA-3 disk at ata0 as master
ad0: 6187MB (12672450 sectors), 13410 cyls, 15 heads, 63 S/T, 512 B/S
ad0: 16 secs/int, 1 depth queue, UDMA33
ad2: <QUANTUM FIREBALL_TM1280A/A6B.2D00> ATA-0 disk at ata1 as master
ad2: 1222MB (2503872 sectors), 2484 cyls, 16 heads, 63 S/T, 512 B/S
ad2: 16 secs/int, 1 depth queue, DMA
acd0: <CD-ROM CDU611/2.0a> CDROM drive at ata0 as slave 
acd0: read 1723KB/s (1723KB/s), 256KB buffer, DMA
acd0: Reads: CD-R, CD-RW, CD-DA stream
acd0: Audio: play, 16 volume levels
acd0: Mechanism: ejectable tray
acd0: Medium: no/blank disc inside, unlocked

ad0 has two active slices, the FreeBSD one is the second and is 11743515
sectors. ad2 is dedicated (not dangerously) to FreeBSD and the slice is
2503809 sectors.

Peter
--
Peter Jeremy (VK2PJ)                    peter.jeremy@alcatel.com.au
Alcatel Australia Limited
41 Mandible St                          Phone: +61 2 9690 5019
ALEXANDRIA  NSW  2015                   Fax:   +61 2 9690 5982


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?00Jan6.103145est.40326>