Newsgroups: comp.os.linux.announce
From: n217cg@tamuts.tamu.edu (Scott Taylor)
Subject: ANNOUNCEMENT: New version of UltraStor driver with scatter/gather
Message-ID: <1993Feb25.080726.8720@klaava.Helsinki.FI>
Date: Thu, 25 Feb 1993 08:07:26 GMT
Approved: linux-announce@tc.cornell.edu (Lars Wirzenius)

Here is the newest (as far as I know) version of Dave Gentzel's
UltraStor 14F driver, hacked to support scatter/gather.  I 
noticed a 5x increase in performance over the old driver (from
80K/sec to 400K/sec transfer rate on writes, measured with iozone
on a Minix fs); as usual, your mileage may vary.  Mr. Gentzel
has attempted to add support for the 34F to this driver; as far
as I know, the 34F patches are untested.  I have been using this
driver for about three weeks; it's been stable under heavy load,
including multiple compiles, restoring files from my SCSI
tape drive (Wangtek 5150ES) to a filesystem on my SCSI disk (Maxtor
LXT213S), and various indignities committed with iozone.

To install, just uudecode, uncompress, and untar the files
(ultrastor.c and ultrastor.h) in kernel/blk_drv/scsi, do a 'make
clean' (just to be safe), rebuild the kernel, and be happy.
The driver should work with 0.99 pl0 and up; I have tested it with
0.99 pl4 and 0.99 pl5.

I am working on multiple outstanding commands, multiple commands
per LUN, etc.,  but I don't foresee getting 'em done anytime
soon.

Send reports of success, failure, flames, or insults to
n217cg@tamuts.tamu.edu.

Scott Taylor
---------------------->8  cut here  8<-----------------------
begin 644 ultraSG.tar.Z
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
0N3[7Z#I=J^MUS:[;M;N&U*VK
 
end
