Subject: port-arm32/10502: CATS crash under heavy IDE usage
To: None <gnats-bugs@gnats.netbsd.org>
From: None <sborrill@precedence.co.uk>
List: netbsd-bugs
Date: 07/04/2000 01:10:13
>Number:         10502
>Category:       port-arm32
>Synopsis:       CATS crash under heavy IDE usage
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    port-arm32-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Jul 04 01:11:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Stephen Borrill
>Release:        25th June 2000
>Organization:
-- 
Dr. Stephen Borrill, Director and Principal Engineer
Precedence Technologies Ltd             Tel: +44 (0) 1223 562 500
86 Kings Hedges Road                    Fax: +44 (0) 1223 563 522
Cambridge, CB4 2PA, United Kingdom      WWW: http://www.precedence.co.uk/
>Environment:
	
System: NetBSD black 1.4ZD NetBSD 1.4ZD (CATS192.1.4ZD) #0: root@cats:/usr/src/sys/arch/arm32/compile/CATS192.1.4ZD arm32
CATS system (64 or 128MB RAM). 2 x 20GB IDE discs (bus masters).

>Description:
A CATS system can have up to 4 IDE devices attached. On heavy disc access, e.g. tarring data between
two discs, the system will completely freeze solid. This has been reported both on single drives (e.g. building
Jikes Java compiler), but is much more reproducible on two drive systems where any heavy access on two
drives at once will cause the machine to hang. This happens whether the two drives share a bus (i.e. master/slave)
or are on separate busses. The problem is so pervasive that after a crash, when fsck starts to check in parallel,
the machine will lock again (and thus to the user, the system appears to have completely died as it won't reboot).
This is a long-established problem. I've seen it under 1.3F, 1.4K, 1.4P and 1.4ZD kernels.
>How-To-Repeat:
Have a CATS with two drives. If either of the following commands are run separately, the system will
work fine. If they are run together, the system will hang at some point.

dd if=/dev/wd0e of=/dev/null bs=10240k
dd if=/dev/wd1e of=/dev/null bs=10240k

Or:

mount /dev/wd0e /usr
mount /dev/wd1e /mnt
(cd /usr ; tar -cf - .) | (cd /mnt ; tar -xf -)

The latter seems to mainly fail when very large files are being copied (e.g. CD images).
>Fix:
	
>Release-Note:
>Audit-Trail:
>Unformatted: