24 Mar, 2011

1 commit


18 Mar, 2011

1 commit

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (170 commits)
    [SCSI] scsi_dh_rdac: Add MD36xxf into device list
    [SCSI] scsi_debug: add consecutive medium errors
    [SCSI] libsas: fix ata list corruption issue
    [SCSI] hpsa: export resettable host attribute
    [SCSI] hpsa: move device attributes to avoid forward declarations
    [SCSI] scsi_debug: Logical Block Provisioning (SBC3r26)
    [SCSI] sd: Logical Block Provisioning update
    [SCSI] Include protection operation in SCSI command trace
    [SCSI] hpsa: fix incorrect PCI IDs and add two new ones (2nd try)
    [SCSI] target: Fix volume size misreporting for volumes > 2TB
    [SCSI] bnx2fc: Broadcom FCoE offload driver
    [SCSI] fcoe: fix broken fcoe interface reset
    [SCSI] fcoe: precedence bug in fcoe_filter_frames()
    [SCSI] libfcoe: Remove stale fcoe-netdev entries
    [SCSI] libfcoe: Move FCOE_MTU definition from fcoe.h to libfcoe.h
    [SCSI] libfc: introduce __fc_fill_fc_hdr that accepts fc_hdr as an argument
    [SCSI] fcoe, libfc: initialize EM anchors list and then update npiv EMs
    [SCSI] Revert "[SCSI] libfc: fix exchange being deleted when the abort itself is timed out"
    [SCSI] libfc: Fixing a memory leak when destroying an interface
    [SCSI] megaraid_sas: Version and Changelog update
    ...

    Fix up trivial conflicts due to whitespace differences in
    drivers/scsi/libsas/{sas_ata.c,sas_scsi_host.c}

    Linus Torvalds
     

13 Feb, 2011

1 commit

  • Simple conversions to drop flush_scheduled_work() usages in
    drivers/scsi. More involved ones will be done in separate patches.

    * NCR5380, megaraid_sas: cancel_delayed_work() +
    flush_scheduled_work() -> cancel_delayed_work_sync().

    * mpt2sas_scsih: drop unnecessary flush_scheduled_work().

    * arcmsr_hba, ipr, pmcraid: flush the used work explicitly instead of
    using flush_scheduled_work().

    Signed-off-by: Tejun Heo
    Signed-off-by: James Bottomley

    Tejun Heo
     

24 Jan, 2011

10 commits

  • Upgrade driver version from 7.100.00.00 to 8.100.00.00

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Basic Code Cleanup:
    (1) _base_get_cb_idx and mpt2sas_base_free_smid were reorganized in
    similar fashion so the order of obtaining the cbx and smid are
    scsiio,
    hi_priority, and internal.
    (2) The hi_priority and internal request queue struct was made
    smaller
    by removing the scmd and chain_tracker, thus saving memory
    allocation.
    (3) For scsiio request, a new structure was created having the same
    elements from the former request tracker struct.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Add support for Customer specific branding messages when device driver loads,
    based on specific customer subsystem vendor and device Ids

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Revision P MPI Header Update:
    a) Added enable/disable SATA NCQ operations to SAS IO Unit Control
    Request.
    b) Modified Host Based Discovery Action Request message format.
    c) Removed Device Path bit from IO Unit Page 1 Flags field.
    d) Added description of ChainOffset field for Diagnostic Data Upload
    Tool.Chaining is not allowed.

    Removed mpi2_history.txt file

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Issue:
    IR shutdown(sending) and IR shutdown(complete) messages not
    listed in /var/log/messages when driver is removed.

    The driver needs to issue a MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED
    request when the driver is unloaded so the IR metadata journal is updated.
    If this request is not sent, then the volume would need a "check
    consistency" issued on the next bootup if the volume was roamed from one
    initiator to another. The current driver supports this feature only when the
    system is rebooted, however this also need to be supported if the driver is
    unloaded

    Fix:
    To fix this issue, the driver is going
    to need to call the _scsih_ir_shutdown prior to reporting
    the volumes missing from the OS, hence the device handles
    are still present.

    Signed-off-by: Kashyap Desai
    Cc: stable@kernel.org
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • There was a configuration page timing out during the initial port
    enable at driver load time. The port enable would fail, and this would
    result in the driver unloading itself, meanwhile the driver was accessing
    freed memory in another context resulting in the panic. The fix is to
    prevent access to freed memory once the driver had issued the diag reset
    which woke up the sleeping port enable process. The routine
    _base_reset_handler was reorganized so the last sleeping process woken up was
    the port_enable.

    Signed-off-by: Kashyap Desai
    Cc: stable@kernel.org
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • False timeout after hard resets, there were two issues which leads
    to timeout.
    (1) Panic because of invalid memory access in the broadcast asyn
    event processing routine due to a race between accessing the scsi command
    pointer from broadcast asyn event processing thread and completing
    the same scsi command from the interrupt context.
    (2) Broadcast asyn event notifcations are not handled due to events
    ignored while the broadcast asyn event is activity being processed
    from the event process kernel thread.

    In addition, changed the ABRT_TASK_SET to ABORT_TASK in the
    broadcast async event processing routine. This is less disruptive to other
    request that generate Broadcast Asyn Primitives besides target
    reset. e.g clear reservations, microcode download,and mode select.

    Signed-off-by: Kashyap Desai
    Cc: stable@kernel.org
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • The ioc->hba_queue_depth is not properly resized when the controller
    firmware reports that it supports more outstanding IO than what can be fit
    inside the reply descriptor pool depth. This is reproduced by setting the
    controller global credits larger than 30,000. The bug results in an
    incorrect sizing of the queues. The fix is to resize the queue_size by
    dividing queue_diff by two.

    Signed-off-by: Kashyap Desai
    Cc: stable@kernel.org
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • The "internal device reset complete" event is not supported
    for older firmware prior to MPI Rev K We added
    a check in the driver so the "internal device reset" event is
    ignored for older firmware. When ignored, the tm_busy flag doesn't
    get set nor cleared. Without this fix, IO queues would be froozen
    indefinetly after the "internal device reset" event, as the "complete" event
    never sent to clear the flag.

    Signed-off-by: Kashyap Desai
    Cc: stable@kernel.org
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • When zoning end devices, the driver is not sending device
    removal handshake alogrithm to firmware. This results in controller
    firmware not sending sas topology add events the next time the device is
    added. The fix is the driver should be doing the device removal handshake
    even though the PHYSTATUS_VACANT bit is set in the PhyStatus of the
    event data. The current design is avoiding the handshake when the
    VACANT bit is set in the phy status.

    Signed-off-by: Kashyap Desai
    Cc: stable@kernel.org
    Signed-off-by: James Bottomley

    Kashyap, Desai
     

22 Dec, 2010

11 commits

  • Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Changing debug print to correct string.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Fix oops loading driver when there is direct attached
    SEP device

    The driver set max phys count to the value reported in sas iounit page
    zero. However this page doesn't take into account additional virutal
    phys. When sas topology event arrives, the phy count is larger than
    expected, and the driver accesses memory array beyond the end of
    allocated space, then oops. Manufacturing page 8 contains the info
    on direct attached phys.

    For this fix will making sure that sas topology event is not
    processing phys greater than the expected phy count.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • change_queue_depth callback API changed
    The change_queue_depth callback changed where there is now an additional
    parameter called reason, with SCSI_QDEPTH_DEFAULT, SCSI_QDEPTH_QFULL,
    and SCSI_QDEPTH_RAMP_UP codes.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • remove support for MPI2_EVENT_TASK_SET_FULL
    This event is obsoleted, so this processing of this event
    needs to be removed from the driver. The controller firmware is going
    to handle TASK_SET_FULL, the driver doesn't need to do anything.
    Even though we are removing the EVENT handling, the behavour has not
    changed between driver versions becuase fimrware will still be handling
    queue throttling, and retrying of commands when the target device queues
    are full.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • MPI2 Rev header files.

    1) Removed Task Set Full Event. Modified description of Disable SCSI
    Initiator Task Set Full Handling bit in the Flags field of IO Unit
    Page 1. Modified the descriptions for the three queue depth fields in
    SAS IO Unit Page 1.
    (2) Added new value for the Current Operation bits of the Flags field
    in the RAID Volume Indicator Structure to indicate that the Make Data
    Consistent operation is running.
    (3) Added a value of 0x6 to various SAS link rate fields to indicate an
    attached PHY that is not using any commonly supported settings.
    (4) Added Volume Not Consistent bit to the VolumeStatusFlags field of
    RAID Volume Page 0.
    (5) Added a new value for the IncompatibleReason field of RAID Physical
    Disk Page 0 to indicate an incompatible media type.
    (6) Added Diagnostic Data Upload tool for the Toolbox Request.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Issue : Switch swap doesn't work when device missing delay is enabled.

    (1) add support to individually add and remove phys to and from
    existing ports. This replaces the routine
    _transport_delete_duplicate_port.
    (2) _scsih_sas_host_refresh - was modified to change the link rate
    from zero to 1.5 GB rate when the firmware reports there is an
    attached device with zero link.
    (3) add new function mpt2sas_device_remove, this is wrapper function
    deletes some redundant code through out driver by combining into one
    subrountine
    (4) two subroutines were modified so the sas_device, raid_device, and
    port lists are traversed once when objects are deleted from the list.
    Previously it was looping back each time an object was deleted from the
    list.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Create a pool of chain buffers, instead of dedicated per IO:
    This enahancment is to address memory allocation failure when asking
    for more than 2300 IOs per host. There is just not enough contiquious
    DMA physical memory to make one single allocation to hold both message
    frames and chain buffers when asking for more than 2300 request. In order
    to address this problem we will have to allocate memory for each chain
    buffer in a seperate individual memory allocation, placing each chain
    element of 128 bytes onto a pool of available chains, which can be
    shared amoung all request.
    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Ability to override/set the ReportDeviceMissingDelay and
    IODeviceMissingDelay from driver: Add new command line option missing_delay,
    this is an array, where the first element is the device missing delay,
    and the second element is io missing delay. The driver will program
    sas iounit page 1 with the new setting when the driver loads. This is
    programmed to the current and persistent configuration page so this takes
    immediately, as will be sticky across host reboots.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Sometime it is seen that controller
    firmware returns an invalid system message id (smid).

    the oops is occurring becuase mpt_callbacks pointer is referenced to
    either null or invalid virtual address. this is due to cb_idx set
    incorrectly from routine _base_get_cb_idx. the cb_idx was set incorrectly
    becuase there is no check to make sure smid is less than maxiumum
    anticapted smid. to fix this issue, we add a check in
    _base_get_cb_idx to make sure smid is not greater than
    ioc->hba_queue_depth. in addition, a similar check was added to make
    sure the reply address was less than the largest anticapated address.

    Newer firmware has sovled this issue, however it good to have this sanity
    check.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • The compiler throws warning messages while compiling without
    CONFIG_SCSI_MPT2SAS_LOGGING.
    Set proper ifdef for CONFIG_SCSI_MPT2SAS_LOGGING to avoid warnnings.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     

17 Nov, 2010

1 commit

  • Move the mid-layer's ->queuecommand() invocation from being locked
    with the host lock to being unlocked to facilitate speeding up the
    critical path for drivers who don't need this lock taken anyway.

    The patch below presents a simple SCSI host lock push-down as an
    equivalent transformation. No locking or other behavior should change
    with this patch. All existing bugs and locking orders are preserved.

    Additionally, add one parameter to queuecommand,
    struct Scsi_Host *
    and remove one parameter from queuecommand,
    void (*done)(struct scsi_cmnd *)

    Scsi_Host* is a convenient pointer that most host drivers need anyway,
    and 'done' is redundant to struct scsi_cmnd->scsi_done.

    Minimal code disturbance was attempted with this change. Most drivers
    needed only two one-line modifications for their host lock push-down.

    Signed-off-by: Jeff Garzik
    Acked-by: James Bottomley
    Signed-off-by: Linus Torvalds

    Jeff Garzik
     

23 Oct, 2010

2 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (84 commits)
    [SCSI] be2iscsi: SGE Len == 64K
    [SCSI] be2iscsi: Remove premature free of cid
    [SCSI] be2iscsi: More time for FW
    [SCSI] libsas: fix bug for vacant phy
    [SCSI] sd: Fix overflow with big physical blocks
    [SCSI] st: add MTWEOFI to write filemarks without flushing drive buffer
    [SCSI] libsas: Don't issue commands to devices that have been hot-removed
    [SCSI] megaraid_sas: Add Online Controller Reset to MegaRAID SAS drive
    [SCSI] lpfc 8.3.17: Update lpfc driver version to 8.3.17
    [SCSI] lpfc 8.3.17: Replace function reset methodology
    [SCSI] lpfc 8.3.17: SCSI fixes
    [SCSI] lpfc 8.3.17: BSG fixes
    [SCSI] lpfc 8.3.17: SLI Additions and Fixes
    [SCSI] lpfc 8.3.17: Code Cleanup and Locking fixes
    [SCSI] zfcp: Remove scsi_cmnd->serial_number from debug traces
    [SCSI] ipr: fix array error logging
    [SCSI] aha152x: enable PCMCIA on 64bit
    [SCSI] scsi_dh_alua: Handle all states correctly
    [SCSI] cxgb4i: connection and ddp setting update
    [SCSI] cxgb3i: fixed connection over vlan
    ...

    Linus Torvalds
     
  • * 'llseek' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:
    vfs: make no_llseek the default
    vfs: don't use BKL in default_llseek
    llseek: automatically add .llseek fop
    libfs: use generic_file_llseek for simple_attr
    mac80211: disallow seeks in minstrel debug code
    lirc: make chardev nonseekable
    viotape: use noop_llseek
    raw: use explicit llseek file operations
    ibmasmfs: use generic_file_llseek
    spufs: use llseek in all file operations
    arm/omap: use generic_file_llseek in iommu_debug
    lkdtm: use generic_file_llseek in debugfs
    net/wireless: use generic_file_llseek in debugfs
    drm: use noop_llseek

    Linus Torvalds
     

15 Oct, 2010

1 commit

  • All file_operations should get a .llseek operation so we can make
    nonseekable_open the default for future file operations without a
    .llseek pointer.

    The three cases that we can automatically detect are no_llseek, seq_lseek
    and default_llseek. For cases where we can we can automatically prove that
    the file offset is always ignored, we use noop_llseek, which maintains
    the current behavior of not returning an error from a seek.

    New drivers should normally not use noop_llseek but instead use no_llseek
    and call nonseekable_open at open time. Existing drivers can be converted
    to do the same when the maintainer knows for certain that no user code
    relies on calling seek on the device file.

    The generated code is often incorrectly indented and right now contains
    comments that clarify for each added line why a specific variant was
    chosen. In the version that gets submitted upstream, the comments will
    be gone and I will manually fix the indentation, because there does not
    seem to be a way to do that using coccinelle.

    Some amount of new code is currently sitting in linux-next that should get
    the same modifications, which I will do at the end of the merge window.

    Many thanks to Julia Lawall for helping me learn to write a semantic
    patch that does all this.

    ===== begin semantic patch =====
    // This adds an llseek= method to all file operations,
    // as a preparation for making no_llseek the default.
    //
    // The rules are
    // - use no_llseek explicitly if we do nonseekable_open
    // - use seq_lseek for sequential files
    // - use default_llseek if we know we access f_pos
    // - use noop_llseek if we know we don't access f_pos,
    // but we still want to allow users to call lseek
    //
    @ open1 exists @
    identifier nested_open;
    @@
    nested_open(...)
    {

    }

    @ open exists@
    identifier open_f;
    identifier i, f;
    identifier open1.nested_open;
    @@
    int open_f(struct inode *i, struct file *f)
    {

    }

    @ read disable optional_qualifier exists @
    identifier read_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    expression E;
    identifier func;
    @@
    ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
    {

    }

    @ read_no_fpos disable optional_qualifier exists @
    identifier read_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    @@
    ssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)
    {
    ... when != off
    }

    @ write @
    identifier write_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    expression E;
    identifier func;
    @@
    ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
    {

    }

    @ write_no_fpos @
    identifier write_f;
    identifier f, p, s, off;
    type ssize_t, size_t, loff_t;
    @@
    ssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)
    {
    ... when != off
    }

    @ fops0 @
    identifier fops;
    @@
    struct file_operations fops = {
    ...
    };

    @ has_llseek depends on fops0 @
    identifier fops0.fops;
    identifier llseek_f;
    @@
    struct file_operations fops = {
    ...
    .llseek = llseek_f,
    ...
    };

    @ has_read depends on fops0 @
    identifier fops0.fops;
    identifier read_f;
    @@
    struct file_operations fops = {
    ...
    .read = read_f,
    ...
    };

    @ has_write depends on fops0 @
    identifier fops0.fops;
    identifier write_f;
    @@
    struct file_operations fops = {
    ...
    .write = write_f,
    ...
    };

    @ has_open depends on fops0 @
    identifier fops0.fops;
    identifier open_f;
    @@
    struct file_operations fops = {
    ...
    .open = open_f,
    ...
    };

    // use no_llseek if we call nonseekable_open
    ////////////////////////////////////////////
    @ nonseekable1 depends on !has_llseek && has_open @
    identifier fops0.fops;
    identifier nso ~= "nonseekable_open";
    @@
    struct file_operations fops = {
    ... .open = nso, ...
    +.llseek = no_llseek, /* nonseekable */
    };

    @ nonseekable2 depends on !has_llseek @
    identifier fops0.fops;
    identifier open.open_f;
    @@
    struct file_operations fops = {
    ... .open = open_f, ...
    +.llseek = no_llseek, /* open uses nonseekable */
    };

    // use seq_lseek for sequential files
    /////////////////////////////////////
    @ seq depends on !has_llseek @
    identifier fops0.fops;
    identifier sr ~= "seq_read";
    @@
    struct file_operations fops = {
    ... .read = sr, ...
    +.llseek = seq_lseek, /* we have seq_read */
    };

    // use default_llseek if there is a readdir
    ///////////////////////////////////////////
    @ fops1 depends on !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier readdir_e;
    @@
    // any other fop is used that changes pos
    struct file_operations fops = {
    ... .readdir = readdir_e, ...
    +.llseek = default_llseek, /* readdir is present */
    };

    // use default_llseek if at least one of read/write touches f_pos
    /////////////////////////////////////////////////////////////////
    @ fops2 depends on !fops1 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read.read_f;
    @@
    // read fops use offset
    struct file_operations fops = {
    ... .read = read_f, ...
    +.llseek = default_llseek, /* read accesses f_pos */
    };

    @ fops3 depends on !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier write.write_f;
    @@
    // write fops use offset
    struct file_operations fops = {
    ... .write = write_f, ...
    + .llseek = default_llseek, /* write accesses f_pos */
    };

    // Use noop_llseek if neither read nor write accesses f_pos
    ///////////////////////////////////////////////////////////

    @ fops4 depends on !fops1 && !fops2 && !fops3 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read_no_fpos.read_f;
    identifier write_no_fpos.write_f;
    @@
    // write fops use offset
    struct file_operations fops = {
    ...
    .write = write_f,
    .read = read_f,
    ...
    +.llseek = noop_llseek, /* read and write both use no f_pos */
    };

    @ depends on has_write && !has_read && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier write_no_fpos.write_f;
    @@
    struct file_operations fops = {
    ... .write = write_f, ...
    +.llseek = noop_llseek, /* write uses no f_pos */
    };

    @ depends on has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    identifier read_no_fpos.read_f;
    @@
    struct file_operations fops = {
    ... .read = read_f, ...
    +.llseek = noop_llseek, /* read uses no f_pos */
    };

    @ depends on !has_read && !has_write && !fops1 && !fops2 && !has_llseek && !nonseekable1 && !nonseekable2 && !seq @
    identifier fops0.fops;
    @@
    struct file_operations fops = {
    ...
    +.llseek = noop_llseek, /* no read or write fn */
    };
    ===== End semantic patch =====

    Signed-off-by: Arnd Bergmann
    Cc: Julia Lawall
    Cc: Christoph Hellwig

    Arnd Bergmann
     

16 Sep, 2010

1 commit

  • All these files use the big kernel lock in a trivial
    way to serialize their private file operations,
    typically resulting from an earlier semi-automatic
    pushdown from VFS.

    None of these drivers appears to want to lock against
    other code, and they all use the BKL as the top-level
    lock in their file operations, meaning that there
    is no lock-order inversion problem.

    Consequently, we can remove the BKL completely,
    replacing it with a per-file mutex in every case.
    Using a scripted approach means we can avoid
    typos.

    file=$1
    name=$2
    if grep -q lock_kernel ${file} ; then
    if grep -q 'include.*linux.mutex.h' ${file} ; then
    sed -i '/include.*/d' ${file}
    else
    sed -i 's/include.*.*$/include /g' ${file}
    fi
    sed -i ${file} \
    -e "/^#include.*linux.mutex.h/,$ {
    1,/^\(static\|int\|long\)/ {
    /^\(static\|int\|long\)/istatic DEFINE_MUTEX(${name}_mutex);

    } }" \
    -e "s/\(un\)*lock_kernel\>[ ]*()/mutex_\1lock(\&${name}_mutex)/g" \
    -e '/[ ]*cycle_kernel_lock();/d'
    else
    sed -i -e '/include.*\/d' ${file} \
    -e '/cycle_kernel_lock()/d'
    fi

    Signed-off-by: Arnd Bergmann
    Cc: linux-scsi@vger.kernel.org
    Cc: "James E.J. Bottomley"

    Arnd Bergmann
     

06 Sep, 2010

1 commit

  • Outdent the code following the if.

    The semantic match that finds this problem is as follows:
    (http://coccinelle.lip6.fr/)

    //
    @r disable braces4@
    position p1,p2;
    statement S1,S2;
    @@

    (
    if (...) { ... }
    |
    if (...) S1@p1 S2@p2
    )

    @script:python@
    p1 << r.p1;
    p2 << r.p2;
    @@

    if (p1[0].column == p2[0].column):
    cocci.print_main("branch",p1)
    cocci.print_secs("after",p2)
    //

    Signed-off-by: Julia Lawall
    Acked-by: Nick Cheng
    Signed-off-by: James Bottomley

    Julia Lawall
     

05 Aug, 2010

1 commit

  • * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (48 commits)
    Documentation: update broken web addresses.
    fix comment typo "choosed" -> "chosen"
    hostap:hostap_hw.c Fix typo in comment
    Fix spelling contorller -> controller in comments
    Kconfig.debug: FAIL_IO_TIMEOUT: typo Faul -> Fault
    fs/Kconfig: Fix typo Userpace -> Userspace
    Removing dead MACH_U300_BS26
    drivers/infiniband: Remove unnecessary casts of private_data
    fs/ocfs2: Remove unnecessary casts of private_data
    libfc: use ARRAY_SIZE
    scsi: bfa: use ARRAY_SIZE
    drm: i915: use ARRAY_SIZE
    drm: drm_edid: use ARRAY_SIZE
    synclink: use ARRAY_SIZE
    block: cciss: use ARRAY_SIZE
    comment typo fixes: charater => character
    fix comment typos concerning "challenge"
    arm: plat-spear: fix typo in kerneldoc
    reiserfs: typo comment fix
    update email address
    ...

    Linus Torvalds
     

28 Jul, 2010

9 commits

  • fixes surrounding PCIe enhanced error handling:

    (1) We need to reject all request generated internaly inside the driver as well
    as request arriving from the scsi mid layer when PCIe EEH is active. The fix is
    to add a per adapter flag called pci_error_recovery which is checked thru out
    the driver when request are generated.

    (2) We don't need to call the pci_driver->remove directly from the PCIe
    callbacks becuase its already called from the PCIe EEH code. In its place we are
    shutting down the watchdog timer, and flushing back all pending IO.

    (3) We need to save and restore the pci state across PCIe EEH handling.

    Signed-off-by: Eric Moore
    Signed-off-by: James Bottomley

    Eric Moore
     
  • Version upgrade patch

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Current driver is not clearing the per device tm_busy flag
    following the Task Mangement request completion from the IOCTL path.
    When this flag is set, the IO queues are frozen. The reason the flag
    didn't get cleared is becuase the driver is referencing
    memory associated to the mpi request following the completion, when
    the memory had been reallocated for a new request. When the memory
    was reallocated, the driver didn't clear the flag becuase it was
    expecting a task managment reqeust, and the reallocated request was
    for SCSI_IO. To fix the problem the driver needs to have a cached
    backup copy of the original reqeust.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • (1) driver was not setting the sense data size prior to sending SCSI_IO,
    resulting in the 0x31190000 loginfo
    (2) The driver needs to copy the sense data to local buffer prior
    to releasing the request message frame. If not, the sense buffer gets
    overwritten by the next SCSI_IO request.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Adding additional messages to the error escallation callbacks which
    displays the wwid, sas address, handle, phy number, enclosure logical id,
    and slot. In the same eh callbacks, routines, the printks were converted
    to sdev_printks, which displays the bus target mapping. These additional
    modifications help better identify the device which is in recovery.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • ISSUE DESCRIPTION:
    This test case involves creating two RAID1 volumes, then
    simultaneiously issue host reset and pull all the drives associated to
    the 1st raid volume. The observed behavour is the physical drives are
    removed, however the volume remains. The expected behavour is the
    volume as well as physical drives should be removed from OS.

    FIX:
    Add support in the post host reset device scan logic for raid volumes
    where the driver will have an additional check for responding raid
    volume where the status should be either online, optimal, or degraded.
    So for voluemes that have a status of missing or failed, the driver
    will mark them for deletion.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • In the driver mpt2sas_base_attach subroutine, we need to add
    support to return the proper error code when there are memory allocation
    failures, e.g. returning -ENOMEM.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Actual problem :
    Driver may receiving the top level expander
    removal event prior to all the individual PD removal events, hence the
    driver is breaking down all the PDs in advanced to the actaul PD UNHIDE
    event. Driver sends multiple
    Target Resets to the same volume handle for each individual PD removal.

    FIX DESCRIPTION:
    To fix this issue, the entire PD device handshake protocal has to be
    moved to interrupt context so the breakdown occurs immediately after the
    actual UNHIDE event arrives. The driver will only issue one Target Reset to
    the volume handle, occurring after the FAILED or MISSING volume status
    event arrives from interrupt context. For the PD UNHIDE event, the driver
    will issue target resets to the PD handles, followed by OP_REMOVE. The
    driver will set the "deteleted" flag during interrupt context. A "pd_handle"
    bitmask was introduced so the driver has a list of known pds during entire
    life of the PD; this replaces the "hidden_raid_component" flag handle in
    the sas_device object. Each bit in the bitmask represents a device handle.
    The bit in the bitmask would be toggled ON/OFF when the HIDE/UNHIDE
    events arrive; also this pd_handle bitmask would bould be refreshed
    across host resets.

    Here we kept older behavior of sending target reset to volume when there is
    a single drive pull, wait for the reply, then send target resets
    to the PDs. We kept this behavior so the driver will
    behave the same for older versions of firmware.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai
     
  • Add support to display additional debug info for SCSI_IO and
    RAID_SCSI_IO_PASSTHROUGH sent from the normal entry queued entry
    point, as well as internal generated commands, and IOCTLS. The
    additional debug info included the phy number, as well as the
    sas address, enclosure logical id, and slot number. This debug info
    has to be enabled thru the logging_level command line option, by
    default this will not be displayed.

    Signed-off-by: Kashyap Desai
    Signed-off-by: James Bottomley

    Kashyap, Desai