Date: Thu, 4 Feb 1999 07:25:28 -0800 (PST) From: nb@geodesic.com To: freebsd-gnats-submit@FreeBSD.ORG Subject: kern/9909: Writing incomplete blocks to /dev/nrst0 hangs the kernel Message-ID: <199902041525.HAA29908@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 9909 >Category: kern >Synopsis: Writing incomplete blocks to /dev/nrst0 hangs the kernel >Confidential: no >Severity: critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Thu Feb 4 07:30:00 PST 1999 >Closed-Date: >Last-Modified: >Originator: Nick Barnes >Release: 2.2.8 >Organization: Geodesic Systems >Environment: FreeBSD raven.ravenbrook.com 2.2.8-RELEASE FreeBSD 2.2.8-RELEASE #0: Fri Jan 15 15:02:41 GMT 1999 root@raven.ravenbrook.com:/usr/src/sys/compile/RAVEN-228 i386 >Description: If I write a file which is not a complete number of blocks to /dev/nrst0 (which in my case is an HP "C1554A DDS-3 SCSI DAT Drive", according to the printed documentation), the kernel seems to hang. No panic or other kernel messages. No response to console keyboard (including Alt-F<n>), no response to ping. I have left it for around fifteen minutes in this state with no improvement It seems irrelevant what I use to do the writes (certainly both cat and dd break it). I can work around using "dd conv=osync". Here's my SCSI driver initializing (from dmesg): aic0 at 0x340-0x35f irq 11 on isa aic0 waiting for scsi devices to settle (aic0:1:0): "IBM DCAS-34330 S65A" type 0 fixed SCSI 2 sd0(aic0:1:0): Direct-Access 4134MB (8467200 512 byte sectors) (aic0:2:0): "HP C1537A L708" type 1 removable SCSI 2 st0(aic0:2:0): Sequential-Access density code 0x25, variable blocks, write-enabled My kernel is very nearly 2.2.8 GENERIC. Here are the config diffs: $ diff GENERIC RAVEN-228 2c2 < # GENERIC -- Generic machine with WD/AHx/NCR/BTx family disks --- > # RAVEN-228 -- Custom kernel for raven.ravenbrook.com, 4,14c4,5 < # For more information read the handbook part System Administration -> < # Configuring the FreeBSD Kernel -> The Configuration File. < # The handbook is available in /usr/share/doc/handbook or online as < # latest version from the FreeBSD World Wide Web server < # <URL:http://www.FreeBSD.ORG/> < # < # An exhaustive list of options and more detailed explanations of the < # device lines is present in the ./LINT configuration file. If you are < # in doubt as to the purpose or necessity of a line, check first in LINT. < # < # $Id: GENERIC,v 1.77.2.28 1998/09/26 17:36:14 wpaul Exp $ --- > # 1999-01-15 nb added ed1 and bpfilter > # 1999-01-15 nb copied from 2.2.8 GENERIC. 17d7 < cpu "I386_CPU" 19,21c9 < cpu "I586_CPU" < cpu "I686_CPU" < ident GENERIC --- > ident RAVEN 37a26 > options NETATALK #Appletalk communications protocols 150a140 > device ed1 at isa? port 0x300 net irq 5 iomem 0xd8000 vector edintr 165a156 > pseudo-device bpfilter 4 #Berkeley packet filter $ >How-To-Repeat: # cat > redfish one fish two fish red fish blue fish ^D # cat redfish > /dev/nrst0 <system hangs utterly> Just the same if the last command is: # dd if=redfish of=/dev/nrst0 But if I do this instead, things work fine: # dd if=redfish of=/dev/nrst0 conv=osync >Fix: No idea. It seems reasonable that I might get an error message if the device driver requires whole blocks. But hanging the kernel is obviously unacceptable. >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199902041525.HAA29908>