From owner-freebsd-bugs Wed Feb 25 20:20:52 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id UAA02115 for freebsd-bugs-outgoing; Wed, 25 Feb 1998 20:20:52 -0800 (PST) (envelope-from owner-freebsd-bugs@FreeBSD.ORG) Received: (from gnats@localhost) by hub.freebsd.org (8.8.8/8.8.8) id UAA02031; Wed, 25 Feb 1998 20:20:23 -0800 (PST) (envelope-from gnats) Date: Wed, 25 Feb 1998 20:20:23 -0800 (PST) Message-Id: <199802260420.UAA02031@hub.freebsd.org> To: freebsd-bugs Cc: From: Bruce Evans Subject: Re: kern/5846: Generic SCSI ioctl w/ big data transfer fails with "physio split the request" diagnostics. Reply-To: Bruce Evans Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org The following reply was made to PR kern/5846; it has been noted by GNATS. From: Bruce Evans To: freebsd-gnats-submit@FreeBSD.ORG, gene@nttlabs.com Cc: Subject: Re: kern/5846: Generic SCSI ioctl w/ big data transfer fails with "physio split the request" diagnostics. Date: Thu, 26 Feb 1998 15:12:19 +1100 >>Description: >Generic SCSI ioctl, particularly SCIOCCOMMAND, with data-in/out phase >fails if the size of data to be transferred is larger than a certain >threshold (approximately 128 bytes in my case). The kernel dumps >"physio split the request.. cannot proceed" onto the console and the >ioctl returns -1 with errno=EIO, as programmed in /sys/scsi/scsi_ioctl.h. This is essentially the same problem as in PR 5599. >>Fix: Untested unimplemented fixes: 1) In maxphys(), don't reduce the transfer size to bp->b_kvasize if that size is 0. 2) Consider fixing all the places that allocate buffer headers bogusly using malloc() and bzero(). scsi_do_ioctl() knows nothing of bp->b_kvasize, but it happens to initialize it correctly using bzero() (I think the bug is in maxphys() in this case - some buffers just don't have kva). Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message