12 Jan, 2008

40 commits

  • Most code changes were made to support adapters based on Marvell IOP, plus some
    other fixes.

    - add more PCI device IDs
    - support for adapters based on Marvell IOP
    - fix a result code translation error on big-endian systems
    - fix resource releasing bug when scsi_host_alloc() fail in hptiop_probe()
    - update scsi_cmnd.resid when finishing a request
    - correct some coding style issues

    [akpm@linux-foundation.org: type fixes]
    Signed-off-by: HighPoint Linux Team
    Signed-off-by: Andrew Morton
    Signed-off-by: James Bottomley

    HighPoint Linux Team
     
  • Fix section mismatch warning:

    WARNING: vmlinux.o(.init.text+0x23be6): Section mismatch: reference to .exit.text:asd_unmap_ha (between 'asd_pci_probe' and 'qla4xxx_module_init')
    +
    WARNING: vmlinux.o(.text+0x1ec8a8): Section mismatch: reference to .exit.text:as
    d_unmap_ioport (between 'asd_unmap_ha' and 'asd_remove_dev_attrs')
    WARNING: vmlinux.o(.text+0x1ec8b1): Section mismatch: reference to .exit.text:as
    d_unmap_memio (between 'asd_unmap_ha' and 'asd_remove_dev_attrs')

    Signed-off-by: Randy Dunlap
    Signed-off-by: James Bottomley

    Randy Dunlap
     
  • Signed-off-by: Jeff Garzik
    Acked-by: "Salyzyn, Mark"
    Signed-off-by: Andrew Morton
    Signed-off-by: James Bottomley

    Jeff Garzik
     
  • * pass Scsi_Host to ips_remove_device() via pci_set_drvdata(),
    allowing us to eliminate the ips_ha[] search loop and call
    ips_release() directly.

    * call pci_{request,release}_regions() and eliminate individual
    request/release_[mem_]region() calls

    * call pci_disable_device(), paired with pci_enable_device()

    * s/0/NULL/ in a few places

    * check ioremap() return value

    Signed-off-by: Jeff Garzik
    Acked-by: "Salyzyn, Mark"
    Signed-off-by: Andrew Morton
    Signed-off-by: James Bottomley

    Jeff Garzik
     
  • [akpm@linux-foundation.org: coding style fixes]
    Signed-off-by: Jeff Garzik
    Acked-by: "Salyzyn, Mark"
    Signed-off-by: Andrew Morton
    Signed-off-by: James Bottomley

    Jeff Garzik
     
  • Signed-off-by: Jeff Garzik
    Acked-by: "Salyzyn, Mark"
    Signed-off-by: Andrew Morton
    Signed-off-by: James Bottomley

    Jeff Garzik
     
  • Fix section mismatch warning:

    WARNING: vmlinux.o(.text+0x1ff3a2): Section mismatch: reference to .exit.text:sym2_remove (between 'sym2_io_error_detected' and 'sym_xpt_done')

    Signed-off-by: Randy Dunlap
    Signed-off-by: James Bottomley

    Randy Dunlap
     
  • This patch contains the following minor cleanups:
    - make the following needlessly global functions static:
    - lpfc_els.c: lpfc_register_new_vport()
    - lpfc_els.c: lpfc_issue_els_fdisc()
    - lpfc_els.c: lpfc_issue_fabric_iocb()
    - lpfc_els.c: lpfc_fabric_abort_vport()
    - lpfc_hbadisc.c: lpfc_dev_loss_tmo_handler()
    - lpfc_hbadisc.c: lpfc_mbx_cmpl_clear_la()
    - lpfc_hbadisc.c: lpfc_disc_flush_list()
    - lpfc_hbadisc.c: __lpfc_find_node()
    - lpfc_init.c: lpfc_hb_timeout()
    - lpfc_init.c: lpfc_block_mgmt_io()
    - lpfc_sli.c: __lpfc_sli_release_iocbq()
    - lpfc_sli.c: lpfc_sli_next_hbq_slot()
    - lpfc_sli.c: lpfc_sli_hbqbuf_init_hbqs()
    - lpfc_sli.c: lpfc_sli_hbqbuf_find()
    - lpfc_sli.c: __lpfc_sli_issue_iocb()
    - #if 0 the following unused global functions:
    - lpfc_els.c: lpfc_fabric_abort_flogi()
    - lpfc_hbadisc.c: lpfc_find_node()
    - lpfc_hbadisc.c: lpfc_findnode_rpi()
    - remove the unused exports

    Signed-off-by: Adrian Bunk
    Acked-by: James Smart
    Signed-off-by: James Bottomley

    Adrian Bunk
     
  • The current scsi_test_unit_ready() is updated to return sense code
    information (in struct scsi_sense_hdr). The sd and sr drivers are
    changed to interpret the sense code return asc 0x3a as no media and
    adjust the device status accordingly.

    Signed-off-by: James Bottomley

    James Bottomley
     
  • If blk_rq_map_sg wrote more than was allocated in the scatterlist,
    BUG_ON() is probably the right thing to do.

    [jejb: rejections fixed up]

    Signed-off-by: Rusty Russell
    Acked-by: Jens Axboe
    Signed-off-by: James Bottomley

    Rusty Russell
     
  • Fix scsi_tgt_lib build when dprintk is defined:
    Also fix accessors problem when dprintk is defined

    drivers/scsi/scsi_tgt_lib.c: In function 'scsi_tgt_cmd_destroy':
    drivers/scsi/scsi_tgt_lib.c:183: warning: format '%lu' expects type 'long unsigned int', but argument 6 has type 'unsigned int'
    drivers/scsi/scsi_tgt_lib.c: In function 'scsi_tgt_cmd_done':
    drivers/scsi/scsi_tgt_lib.c:330: warning: format '%lu' expects type 'long unsigned int', but argument 5 has type 'unsigned int'
    drivers/scsi/scsi_tgt_lib.c: In function 'scsi_tgt_transfer_response':
    drivers/scsi/scsi_tgt_lib.c:345: warning: format '%lu' expects type 'long unsigned int', but argument 5 has type 'unsigned int'
    drivers/scsi/scsi_tgt_lib.c: In function 'scsi_tgt_init_cmd':
    drivers/scsi/scsi_tgt_lib.c:368: warning: format '%lu' expects type 'long unsigned int', but argument 6 has type 'unsigned int'
    drivers/scsi/scsi_tgt_lib.c: In function 'scsi_tgt_kspace_exec':
    drivers/scsi/scsi_tgt_lib.c:499: warning: format '%lu' expects type 'long unsigned int', but argument 9 has type 'unsigned int'
    drivers/scsi/scsi_tgt_lib.c: In function 'scsi_tgt_kspace_it_nexus_rsp':
    drivers/scsi/scsi_tgt_lib.c:620: error: 'mid' undeclared (first use in this function)
    drivers/scsi/scsi_tgt_lib.c:620: error: (Each undeclared identifier is reported only once
    drivers/scsi/scsi_tgt_lib.c:620: error: for each function it appears in.)
    make[2]: *** [drivers/scsi/scsi_tgt_lib.o] Error 1

    [tomo:
    > - dprintk("%d %d %llx\n", host_no, result, (unsigned long long) mid);
    > + dprintk("%d %d\n", host_no, result);

    'mid' is a typo. I wanted to do:

    dprintk("%d %d %llx\n", host_no, result, (unsigned long long)itn_id);

    The rest looks ok. Thanks,
    ]

    Signed-off-by: Randy Dunlap
    Signed-off-by: Boaz Harrosh
    Acked-by: FUJITA Tomonori
    Signed-off-by: James Bottomley

    Randy Dunlap
     
  • On Wed, Nov 07, 2007 at 01:51:44PM -0500, Salyzyn, Mark wrote:
    > Christoph Hellwig [mailto:hch@infradead.org] sez:
    > > Did anyone run the driver through sparse to see if we have
    > > more issues like this?
    >
    > There are some warnings from sparse, none like this one. I will deal
    > with the warnings ...

    Actually there are a lot of endianess warnings, fortunately most of them
    harmless. The patch below fixes all of them up (including the ones in
    the patch I replied to), except for aac_init_adapter which is really odd
    and I don't know what to do.

    [jejb fixed up rejections and checkpatch issues]

    Signed-off-by: Christoph Hellwig
    Acked-by: Mark Salyzyn
    Signed-off-by: James Bottomley

    Christoph Hellwig
     
  • Signed-off-by: Andrew Vasquez
    Signed-off-by: James Bottomley

    Andrew Vasquez
     
  • Drivers do SCRs for each Vport. When something changes in the
    fabric, firmware generates one interrupt for each RSCN. Based on
    the current implementation, in each case, we make recursive calls
    to handle RSCN for physical and each subsequent virtual ports.
    The fix is to also take into consideration the vp_idx, which is
    set by the firmware to indicate the vport the RSCN was meant for.

    Signed-off-by: Andrew Vasquez
    Signed-off-by: James Bottomley

    Shyam Sundar
     
  • Firmware will export to software the maximum number of vports
    supported for any given firmware version and ISP type. Use this
    information rather than the current hardcoding of limitations
    within the driver.

    Signed-off-by: Andrew Vasquez
    Signed-off-by: James Bottomley

    Andrew Vasquez
     
  • Callers of qla2x00_async_event() already populate the mb[] array
    upon invocation, doing so via the appropriate mailbox register
    accessors. The stale codes removed are leftover-bits kept during
    the FWI2 transition. Though relatively benign, the extra-reads
    are not valid for FWI2 boards (ISP24xx and above) and peek into
    the incorrect regions of registers.

    Signed-off-by: Andrew Vasquez
    Signed-off-by: James Bottomley

    Andrew Vasquez
     
  • CRQ send errors that return with H_CLOSED should return with
    SCSI_MLQUEUE_HOST_BUSY until firmware alerts the client of a CRQ
    transport event. The transport event will either reinitialize and
    requeue the requests or fail and return IO with DID_ERROR.

    To avoid failing the eh_* functions while re-attaching to the server
    adapter this will retry for a period of time while ibmvscsi_send_srp_event
    returns SCSI_MLQUEUE_HOST_BUSY.

    In ibmvscsi_eh_abort_handler() the loop includes the search of the
    event list. The lock on the hostdata is dropped while waiting to try
    again after failing ibmvscsi_send_srp_event. The event could have been
    purged if a login was in progress when the function was called.

    In ibmvscsi_eh_device_reset_handler() the loop includes the call to
    get_event_struct() because a failing call to ibmvscsi_send_srp_event()
    will have freed the event struct.

    Signed-off-by: Robert Jennings
    Signed-off-by: Brian King
    Signed-off-by: James Bottomley

    Robert Jennings
     
  • - Change title to remove "Mid-Layer" since the doc is about all of the
    SCSI layers.
    - Use "SCSI" instead of "scsi" in docbook text.
    - Use "*/" to end kernel-doc notation blocks.
    - A few other minor typo fixes.

    Signed-off-by: Randy Dunlap
    Signed-off-by: James Bottomley

    Randy Dunlap
     
  • Use correct function name in kernel-doc.

    Signed-off-by: Randy Dunlap
    Signed-off-by: James Bottomley

    Randy Dunlap
     
  • Minor corrections and additions to 'scsi_logging_level', as pointed out
    by Chuck Ebbert.
    Also point out the IBM S390-tools 'scsi_logging_level' script.

    Signed-off-by: Randy Dunlap
    Signed-off-by: James Bottomley

    Randy Dunlap
     
  • Some SCSI tape medium changers that need the BLIST_SINGLELUN flag have
    the medium changer at one LUN and the tape drive at a different LUN.
    The inquiry string of the tape drive may be different from that of the
    medium changer. In order for single_lun to be effective, every
    scsi_device under a given scsi_target must have it set. This means that
    there needs to be a blacklist entry for BOTH the medium changer AND the
    tape drive, which is impractical because some medium changers may be
    paired with a variety of different tape drive models. It makes more
    sense to put the single_lun flag in scsi_target instead of scsi_device,
    which causes every device at a given target ID to inherit the single_lun
    flag from one LUN. This makes it possible to blacklist just the medium
    changer and not the tape drive.

    Signed-off-by: Tony Battersby
    Signed-off-by: James Bottomley

    Tony Battersby
     
  • Update version and changelog

    Signed-off-by: Bo Yang
    Signed-off-by: James Bottomley

    bo yang
     
  • Added module parameter "poll_mode_io" to support for "polling"
    (reduced interrupt operation). In this mode, IO completion interrupts
    are delayed. At the end of initiating IOs, the driver schedules for
    cmd completion if there are pending cmds. A timer-based interrupt has
    also been added to prevent IO completion from being delayed
    indefinitely in the case that no new IOs are initiated. Some
    formatting issues in resume, suspend comment block also corrected

    Signed-off-by: Bo Yang
    Signed-off-by: James Bottomley

    bo yang
     
  • Driver will call cmd completion routine from Reset path without waiting for cmd completion from isr context.

    Signed-off-by: Bo Yang
    Signed-off-by: James Bottomley

    bo yang
     
  • MegaRAID utilities expect sense_buff to be of type unsigned long.

    Signed-off-by: Bo Yang
    Signed-off-by: James Bottomley

    bo yang
     
  • 1. Setting the max_sectors_per_req based on max SGL supported by the
    FW. Prior versions calculated this value from controller info's
    max_sectors_1, max_sectors_2. For certain controllers/FW, this was
    resulting in a value greater than max SGL supported by the FW. Now
    we take the min of max sgl from FW and max_sectors calculation.

    2. Increased MFI_POLL_TIMEOUT_SECS to 60 seconds from 10. FW may take
    a max of 60 seconds to respond to the INIT cmd.

    Signed-off-by: Bo Yang
    Signed-off-by: James Bottomley

    bo yang
     
  • Adding hibernation support. suspend, resume routine implemented.

    Signed-off-by: Bo Yang
    Signed-off-by: James Bottomley

    bo yang
     
  • The 3ware 9500S-8 SATA RAID controller exhibits terrible write
    performance when PCI memory-write-and-invalidate is disabled. This is
    easy to demonstrate by replacing pci_try_set_mwi() in the patch below
    with pci_clear_mwi(). My benchmarks show the following:

    MWI disabled: 15 MB/s write, 330 MB/s read
    MWI enabled: 240 MB/s write, 330 MB/s read

    Most motherboards will enable MWI without the driver having to set it
    explicitly, so most people probably wouldn't encounter this problem.
    For the few motherboards that don't enable it, this patch could give a
    16x performance improvement for writing.

    This issue does not seem to affect the 9550SX controller, but the patch
    doesn't hurt it either. I haven't tested any of the other 3ware
    controllers.

    Signed-off-by: Tony Battersby
    Acked-by: adam radford
    Signed-off-by: James Bottomley

    Tony Battersby
     
  • Annotate sas_queuecommand with locking details, and clean up a few
    more sparse warnings about static/non-static declarations.

    Signed-off-by: Darrick J. Wong
    Signed-off-by: James Bottomley

    Darrick J. Wong
     
  • sparse complains about the mixing of enums in libsas. Since the
    underlying numeric values of both enums are the same, combine them
    to get rid of the warning.

    Signed-off-by: Darrick J. Wong
    Signed-off-by: James Bottomley

    Darrick J. Wong
     
  • Signed-off-by: Matthias Kaehlcke
    Acked-by: Bo Yang
    Signed-off-by: James Bottomley

    Matthias Kaehlcke
     
  • - convert to accessors and !use_sg cleanup
    - Not ready for sg-chaining

    Signed-off-by: Boaz Harrosh
    Acked-by: Randy Dunlap
    Tested-by: Randy Dunlap
    Signed-off-by: James Bottomley

    Boaz Harrosh
     
  • - convert to accessors and !use_sg cleanup

    Signed-off-by: Boaz Harrosh
    Acked-by: Randy Dunlap
    Tested-by: Randy Dunlap
    Signed-off-by: James Bottomley

    Boaz Harrosh
     
  • Signed-off-by: James Bottomley

    James Bottomley
     
  • Add Documentation/DocBook/scsi_midlayer.tmpl, add to Makefile, and update
    lots of kerneldoc comments in drivers/scsi/*.

    Updated with comments from Stefan Richter, Stephen M. Cameron,
    James Bottomley and Randy Dunlap.

    Signed-off-by: Rob Landley
    Signed-off-by: James Bottomley

    Rob Landley
     
  • Remove tracing for request with a "qualifier" field set in the
    response. The protocol status qualifier now contains measurement
    data for "good" commands, so this check would trace every response
    by default.

    The fix is to simply remove the "qual" tracing: The responses with an
    interesting status are also traced as "ferr" or "perr" and all
    responses can be traced as "norm" with a higher trace level.

    Signed-off-by: Christof Schmitt
    Signed-off-by: Swen Schillig
    Signed-off-by: James Bottomley

    Christof Schmitt
     
  • When adding an invalid LUN, there is a deadlock between the add
    via scsi_scan_target and the slave_destroy handler: The handler
    waits for the scan to complete, but for an invalid unit,
    scsi_scan_target directly calls the slave_destroy handler.

    Fix the deadlock by removing the wait in the slave_destroy
    handler, it was not necessary anyway.

    Signed-off-by: Christof Schmitt
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Swen Schillig
    Signed-off-by: James Bottomley

    Christof Schmitt
     
  • The common I/O layer can call remove a handler to inform zfcp
    that a device disappeared. The handler zfcp_ccw_remove then
    removes all unit, port and the adapter data structures. Removing
    the units requires that the SCSI devices are removed first.

    Signed-off-by: Christof Schmitt
    Signed-off-by: Swen Schillig
    Signed-off-by: James Bottomley

    Christof Schmitt
     
  • It is not necessary to use jiffies or milliseconds to specify
    waiting times that last a couple of seconds.

    Signed-off-by: Christof Schmitt
    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Swen Schillig
    Signed-off-by: James Bottomley

    Christof Schmitt
     
  • Signed-off-by: Christof Schmitt
    Signed-off-by: Swen Schillig
    Signed-off-by: James Bottomley

    Christof Schmitt