Mailinglist Archive: opensuse-bugs (8107 mails)

< Previous Next >
[Bug 243958] SLES 9 SP3 mptscsi device driver with IBM's San Volume Controller
  • From: bugzilla_noreply@xxxxxxxxxx
  • Date: Thu, 8 Feb 2007 17:58:41 -0700 (MST)
  • Message-id: <20070209005841.61E2825C887@xxxxxxxxxxxxxxxxxxxxxx>

------- Comment #1 from betts@xxxxxxxxxx 2007-02-08 17:58 MST -------

Description of problem:

The mptscsi driver in linux version 2.6.9-34 changes a SCSI
return status of scsi busy into a SCSI status of host busy and
scsi (target) busy before returning the status to the linux
I/O stack.

Version-Release number of selected component (if applicable):
The code change to the mptscsi driver that appends the DID_BUS_BUSY
status to the SCSI status was made between linux versions 2.6.9-22
and 2.6.9-34.

How reproducible:
100% reproducible

Steps to Reproduce:
1. Create a condition where the LSI hardware returns a scsi
status of MPI_SCSI_STATUS_BUSY to the driver. This is easy to
do runnning SLES 9 SP3 as a virtual machine with the VMware ESX product.
2. The mptscsi driver converts the scsi status of MPI_SCSI_STATUS_BUSY into
a host status of DID_BUS_BUSY and a scsi status of MPI_SCSI_STATUS_BUSY.
3. When the SCSI I/O command is returned to the Linux SCSI midlayer with a
host status of DID_BUS_BUSY, the command will be retried five
times and then if the target continues to return a status of BUSY the
I/O command will be marked as failed. If the SCSI I/O
command originated within the ext3 file system, the I/O failure will cause
the ext3 file system to be marked as read-only.

This behavior is different from the mptscsi driver in linux version 2.6.9-22.
In the version *22, the mptscsi driver did not append the host status of
DID_BUS_BUSY to a SCSI command failure of MPI_SCSI_STATUS_BUSY. Without the
host status of DID_BUS_BUSY, the Linux SCSI midlayer will retry the failed
I/O command an unlimited number of times. In the case of the ext3 file system,
a brief period of busy status from the SCSI target would not cause the
file system to be marked read-only.

Actual results:
When an LSI SCSI device returns a status of target busy for a very
brief period of time, I/Os will fail after a few retries.

Expected results:
When an LSI SCSI device returns a status of target busy for a very
brief period of time, I/Os will be retried.

Additional info:

The problematic change to the mptscsi.c file is in the
mptscsih_io_done() routine:

case MPI_IOCSTATUS_SUCCESS: /* 0x0000 */
if (scsi_status == MPI_SCSI_STATUS_BUSY)
sc->result = (DID_BUS_BUSY << 16) | scsi_status;
sc->result = (DID_OK << 16) | scsi_status;

This modification was clearly made for a reason, but it may to be
out of compliance with the LSI device specificiation. It is unexpected that
a scsi status of BUSY would be treated the same as a host status of busy.

Configure bugmail:
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.

< Previous Next >