Bug 8426

Summary: massive slowdown on SCSI CD/DVD drive connected to mptspi driver
Product: SCSI Drivers Reporter: Doug Chapman (doug.chapman)
Component: OtherAssignee: scsi_drivers-other
Status: RESOLVED CODE_FIX    
Severity: high    
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.21 Subsystem:
Regression: --- Bisected commit-id:

Description Doug Chapman 2007-05-03 15:26:39 UTC
Most recent kernel where this bug did *NOT* occur:
2.6.20

Distribution:
fedora 7 - test 4
seen with fedora kernel and stock upstream 2.6.21 kernel as well

Hardware Environment:
HP Integrity Superdome
NEC  DVD_RW ND-3540A
LSI Fusion MPT SPI SCSI adapter

also on:
HP Integrity rx8640
NEC DVD+RW ND-2100AD


Software Environment: fedora 7 test 4

Problem Description:
Reading CD/DVD is approx 150times slower than usual.  Simple test of:
time cat kernel-2.6.20-1.3088.fc7.ia64.rpm > /dev/null

took approx 10 minutes on 2.6.21, took 2-4 seconds on 2.6.20 (same system, same
disk, repeated multiple times to ensure it wasn't bad hardware)


Steps to reproduce:
mount a DVD
read a large file from the DVD


Appears to have been caused by this git commit:

commit 5a9c47b1344b514758d5d7f193c672850390cc36
Author: Eric Moore <eric.moore@lsi.com>
Date:   Mon Jan 29 09:43:17 2007 -0700

    [SCSI] fusion - move SPI API over to mptspi.c

    Move some functions that only apply to the mptspi module over from mptscsih.
    Signed-off-by: Eric Moore <Eric.Moore@lsi.com>
    Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>


I backed out this patch against the current HEAD and DVD drive performance is
back to normal.  I have not yet looked into this to determine exactly what in
this patch caused the issue.
Comment 1 Doug Chapman 2007-05-07 12:47:46 UTC
After digging through the code I realized that when code was moved from mptscsih
to mptspi the order of some initialization routines changed.  I changed
mptspi_slave_configure to call mptspi_initTarget before mptscih_slave_configure.

Tested against 2.6.21 on the system where I originally saw the problem and it
works just fine now.

I will post the patch to linux-scsi list.
Comment 2 Andrew Morton 2007-07-24 11:52:32 UTC
Fixed by 29982e9acd3e81a289c73321401427d02eaa8adc