Public bug reported:

The function mptscsih_io_done() in drivers/message/fusion/mptscsih.c
maps scsi device busy to scsi host+device busy for the case where the
MPI IOC status is MPI_IOCSTATUS_SUCCESS.  This action results in
limiting Linux mid-layer SCSI retransmissions for this case to 5 without
any delay between successive retransmissions (see DID_BUS_BUSY handling
in scsi_decide_disposition in drivers/scsi/scsi_error.c).  While this
change was made in order to fail-over to Linux host resident MPIO code
more quickly in the event of such scsi device busy failures, this also
leads to scsi device busy I/O failures being reported to SCSI client
code more readily in VMware ESX Server configurations.  When such an I/O
failure occurs on a SCSI WRITE command to a journal of an ext3 file
system, the ext3 file system is remounted in read-only mode.

A fix for this issue is present in
drivers/message/fusion/mptscsih.c:mptscsih_io_done() in upstream 2.6.22
code.  I've included below the patch from Eric Moore from LSI Logic
which contained the fix.

This address the issue of VMWare guest OS being remounted as read-only
becuase the underlying device was held busy too long, , and at the same
time address Engenio MPP driver concerns over infinite retries.  This
patch removes the code that snoops the SAM STATUS on busy, which would
be returning DID_BUS_BUSY, instead we return the status as is.   Retry
hanlding seems to be properly handled in scsi_softirq_done, where a busy
sam status would only occurr for the time specified by (cmd->allowed
+1) * cmd->timeout_per_command.

Signed-off-by: Eric Moore <[EMAIL PROTECTED]>

diff -uarpN b/drivers/message/fusion/mptscsih.c 
a/drivers/message/fusion/mptscsih.c
--- b/drivers/message/fusion/mptscsih.c 2007-03-15 18:20:01.000000000 -0600
+++ a/drivers/message/fusion/mptscsih.c 2007-03-18 12:07:26.000000000 -0600
@@ -819,10 +819,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_F
                        sc->resid=0;
                case MPI_IOCSTATUS_SCSI_RECOVERED_ERROR:        /* 0x0040 */
                case MPI_IOCSTATUS_SUCCESS:                     /* 0x0000 */
-                       if (scsi_status == MPI_SCSI_STATUS_BUSY)
-                               sc->result = (DID_BUS_BUSY << 16) | scsi_status;
-                       else
-                               sc->result = (DID_OK << 16) | scsi_status;
+                       sc->result = (DID_OK << 16) | scsi_status;
                        if (scsi_state == 0) {
                                ;
                        } else if (scsi_state & MPI_SCSI_STATE_AUTOSENSE_VALID) 
{
-

** Affects: ubuntu
     Importance: Undecided
         Status: New

-- 
LSI Logic MPT driver mapping of scsi device busy to scsi host+device busy leads 
to read-only ext3 fs remounts on VMware ESX Server.
https://bugs.launchpad.net/bugs/137585
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to