This service will be undergoing maintenance at 00:00 UTC, 2016-09-28. It is expected to last about 1 hours
Bug 64149 - Bug in scsi_merge.c
Bug in scsi_merge.c
Status: CLOSED ERRATA
Product: Red Hat Linux
Classification: Retired
Component: kernel (Show other bugs)
7.2
i386 Linux
medium Severity medium
: ---
: ---
Assigned To: Doug Ledford
Brian Brock
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2002-04-26 12:55 EDT by Tom "spot" Callaway
Modified: 2007-04-18 12:42 EDT (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2003-02-13 13:20:33 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:


Attachments (Terms of Use)
scsi_merge.c patch (337 bytes, patch)
2002-04-26 12:56 EDT, Tom "spot" Callaway
no flags Details | Diff

  None (edit)
Description Tom "spot" Callaway 2002-04-26 12:55:57 EDT
filing on behalf of Ed Goggin @ EMC

Description of Problem:

The bug is in __init_io() of drivers/scsi/scsi_merge.c.
This bug causes partially completed i/os (special requests)
to occur in cases where an i/o request consists of only a
single segment but multiple buffer headers.  This will only
happen with an HBA driver which supports DMA clustering.  We
get hundreds if not thousands of such partially completed i/os
to occur by issuing either raw or buffered sd device i/o.

The major effect of this bug is to slow down i/o throughput
since the linux scsi subsystem appears to handle such partially
completed i/os by re-issuing the residual portion of the i/o
as a special request.

Version-Release number of selected component (if applicable):

2.4.9-31

The patch for this is simple (1 liner) and is attached to this bugreport.
Comment 1 Tom "spot" Callaway 2002-04-26 12:56:30 EDT
Created attachment 55484 [details]
scsi_merge.c patch
Comment 2 Matt Domsch 2002-07-02 11:13:57 EDT
This is addressed in a separate fix in the 2.4.19-rc1 kernel at least (I don't 
know when it was added exactly):

         * Don't bother with scatter-gather if there is only one segment.
         */
        if (count == 1) {
                this_count = SCpnt->request.nr_sectors;
                goto single_segment;
        }
 
The incorrect code is present in 2.4.18-3 at least.
Comment 3 Matt Domsch 2002-07-02 12:49:43 EDT
Dell and EMC would like to see this fixed in a Pensacola errata kernel.
Comment 4 Gary Lerhaupt 2002-07-19 16:09:04 EDT
Kyu (ykang@redhat.com) informed us that the patch included in this bugzilla 
will be added to the next AS errata.  Can this be confirmed?
-Gary
Comment 5 Yil-Kyu Kang 2002-07-19 16:52:22 EDT
Yes, this patch has been accepted and we are planning on shipping this in our
next AS errata.
Comment 6 Tom Coughlan 2002-09-20 16:10:54 EDT
This fix is checked in to the AS CVS source tree.  We expect it to ship in an
errata as soon feasible.
Comment 7 Matt Domsch 2003-02-13 13:20:33 EST
Fixed in kernel 2.4.9-e.9 at least, and 2.4.20-based kernels slated for 
GinGin.  Closing.

Note You need to log in before you can comment on or make changes to this bug.