04 Jan, 2012

1 commit


26 Jul, 2011

1 commit

  • Currently it's impossible to find out if the host supports
    wide SCSI unless you're committed to trawl through syslog.
    And it's near impossible to find the actual HBA id, which
    is settable for some SCSI HBAs (like aic7xxx).
    So export them via sysfs.

    Signed-off-by: Hannes Reinecke
    Signed-off-by: Ankit Jain
    Signed-off-by: James Bottomley

    Hannes Reinecke
     

30 Mar, 2010

1 commit

  • …it slab.h inclusion from percpu.h

    percpu.h is included by sched.h and module.h and thus ends up being
    included when building most .c files. percpu.h includes slab.h which
    in turn includes gfp.h making everything defined by the two files
    universally available and complicating inclusion dependencies.

    percpu.h -> slab.h dependency is about to be removed. Prepare for
    this change by updating users of gfp and slab facilities include those
    headers directly instead of assuming availability. As this conversion
    needs to touch large number of source files, the following script is
    used as the basis of conversion.

    http://userweb.kernel.org/~tj/misc/slabh-sweep.py

    The script does the followings.

    * Scan files for gfp and slab usages and update includes such that
    only the necessary includes are there. ie. if only gfp is used,
    gfp.h, if slab is used, slab.h.

    * When the script inserts a new include, it looks at the include
    blocks and try to put the new include such that its order conforms
    to its surrounding. It's put in the include block which contains
    core kernel includes, in the same order that the rest are ordered -
    alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
    doesn't seem to be any matching order.

    * If the script can't find a place to put a new include (mostly
    because the file doesn't have fitting include block), it prints out
    an error message indicating which .h file needs to be added to the
    file.

    The conversion was done in the following steps.

    1. The initial automatic conversion of all .c files updated slightly
    over 4000 files, deleting around 700 includes and adding ~480 gfp.h
    and ~3000 slab.h inclusions. The script emitted errors for ~400
    files.

    2. Each error was manually checked. Some didn't need the inclusion,
    some needed manual addition while adding it to implementation .h or
    embedding .c file was more appropriate for others. This step added
    inclusions to around 150 files.

    3. The script was run again and the output was compared to the edits
    from #2 to make sure no file was left behind.

    4. Several build tests were done and a couple of problems were fixed.
    e.g. lib/decompress_*.c used malloc/free() wrappers around slab
    APIs requiring slab.h to be added manually.

    5. The script was run on all .h files but without automatically
    editing them as sprinkling gfp.h and slab.h inclusions around .h
    files could easily lead to inclusion dependency hell. Most gfp.h
    inclusion directives were ignored as stuff from gfp.h was usually
    wildly available and often used in preprocessor macros. Each
    slab.h inclusion directive was examined and added manually as
    necessary.

    6. percpu.h was updated not to include slab.h.

    7. Build test were done on the following configurations and failures
    were fixed. CONFIG_GCOV_KERNEL was turned off for all tests (as my
    distributed build env didn't work with gcov compiles) and a few
    more options had to be turned off depending on archs to make things
    build (like ipr on powerpc/64 which failed due to missing writeq).

    * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
    * powerpc and powerpc64 SMP allmodconfig
    * sparc and sparc64 SMP allmodconfig
    * ia64 SMP allmodconfig
    * s390 SMP allmodconfig
    * alpha SMP allmodconfig
    * um on x86_64 SMP allmodconfig

    8. percpu.h modifications were reverted so that it could be applied as
    a separate patch and serve as bisection point.

    Given the fact that I had only a couple of failures from tests on step
    6, I'm fairly confident about the coverage of this conversion patch.
    If there is a breakage, it's likely to be something in one of the arch
    headers which should be easily discoverable easily on most builds of
    the specific arch.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Guess-its-ok-by: Christoph Lameter <cl@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>

    Tejun Heo
     

21 Jun, 2009

2 commits

  • There have been several bug reports which identified the Ultrium-3
    tape as just hanging up on the bus during certain types of IU
    transfer. The identified culpret is type 0x02 (MULTIPLE COMMAND)
    transfers. The only way to prevent this tape wedging is to prevent it
    from using IU transfers at all. So this patch uses the exported
    blacklist matching technology to recognise the drive and force it not
    to use IU transfers.

    Signed-off-by: James Bottomley

    James Bottomley
     
  • Right at the moment, we carefully set up the spi_support_xx in the
    device configuration routines, but then we never actually use the
    results: we rely on the inquiry strings. If we're going to allow
    overrides to the inquiry data, we have to rely on our own internal
    settings.

    Signed-off-by: James Bottomley

    James Bottomley
     

15 Jun, 2009

1 commit

  • This patch allows the Adaptec firmware to pass on its values for Packetize and
    QAS. To do this, the settings max_iu and max_qas have been introduced into
    the SPI transport class and populated from the adaptec NVram tables. Domain
    validation in the SPI transport class will respect the max settings when
    configuring to the highest possible speed for testing.

    Signed-off-by: James Bottomley

    James Bottomley
     

30 Dec, 2008

2 commits


13 Oct, 2008

1 commit

  • Multipath is best at handling transport errors. If it gets a device
    error then there is not much the multipath layer can do. It will just
    access the same device but from a different path.

    This patch breaks up failfast into device, transport and driver errors.
    The multipath layers (md and dm mutlipath) only ask the lower levels to
    fast fail transport errors. The user of failfast, read ahead, will ask
    to fast fail on all errors.

    Note that blk_noretry_request will return true if any failfast bit
    is set. This allows drivers that do not support the multipath failfast
    bits to continue to fail on any failfast error like before. Drivers
    like scsi that are able to fail fast specific errors can check
    for the specific fail fast type. In the next patch I will convert
    scsi.

    Signed-off-by: Mike Christie
    Cc: Jens Axboe
    Signed-off-by: James Bottomley

    Mike Christie
     

30 Jul, 2008

1 commit

  • The class_device->device conversion is causing an oops in revalidate
    because it's assuming that the device_for_each_child iterator will only
    return struct scsi_device children. The conversion made all former
    class_devices children of the device as well, so this assumption is
    broken. Fix it.

    Cc: Stable Tree
    Signed-off-by: James Bottomley

    James Bottomley
     

28 Apr, 2008

1 commit

  • scsi_transport_spi.c needs to #include :

    next-20080423/drivers/scsi/scsi_transport_spi.c:1467: error: implicit declaration of function 'sysfs_update_group'
    make[3]: *** [drivers/scsi/scsi_transport_spi.o] Error 1

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

    Randy Dunlap
     

23 Apr, 2008

1 commit


20 Apr, 2008

1 commit


24 Jan, 2008

1 commit

  • This conversion makes full use of the is_visible() callback on attribute
    groups. Now, each device appears only with its capability flags in the
    transport class directory. Previously each device appeared with the
    capability of the host, so this is a functionality improvement.
    Converting to attribute groups allows us to sweep away most of the home
    grown #defines that were effectively doing the same thing.

    Signed-off-by: James Bottomley

    James Bottomley
     

22 Sep, 2007

1 commit

  • Domain Validation in the SPI transport class is failing on boxes with
    damaged cables (and failing to the extent that the box hangs). The
    problem is that the first test it does is a cable integrity test for
    wide transfers and if this fails, it turns the wide bit off. The
    problem is that the next set of tests it does turns wide back on
    again, with the result that it runs through the entirety of DV with a
    known bad setting and then hangs the system.

    The attached patch fixes the problem by physically nailing the wide
    setting to what it deduces it should be for the whole of Domain
    Validation.

    Signed-off-by: James Bottomley

    James Bottomley
     

03 Feb, 2007

1 commit


04 Jan, 2007

1 commit

  • The code does this:

    unsigned char sense[SCSI_SENSE_BUFFERSIZE];
    ...
    scsi_normalize_sense(sense, sizeof(*sense), sshdr)

    however the sizeof will return 1 not 96 which means the sense data will
    have no valid ASC/ASCQ values. Fix by putting the correct sense size.
    The only affected case for this would have been the DV buffer sanity
    check failure, which is fortunately quite rare.

    Signed-off-by: James Bottomley

    James Bottomley
     

22 Nov, 2006

1 commit


24 Sep, 2006

1 commit


01 Jul, 2006

1 commit


10 Jun, 2006

2 commits


12 Mar, 2006

2 commits

  • The check for a one byte message should be msg[0] == 0x55 not msg == 0x55

    Signed-off-by: James Bottomley

    James Bottomley
     
  • Add several missing messages from SPI3, SPI4 and SPI5:
    - Terminate Process
    - Continue Task
    - Target Transfer Disable
    - Clear ACA
    - LUN Reset
    - ACA
    - QAS Request
    Rename some older commands to their SPI5 names:
    - Command Complete -> Task Complete
    - Abort -> Abort Task Set
    - Bus device Reset -> Target Reset
    - Clear Queue -> Clear Task Set

    Change spi_print_msg() to always consume one byte, even if we don't
    recognise it. That allows drivers to call it in a loop to print all
    messages.

    Signed-off-by: Matthew Wilcox
    Signed-off-by: James Bottomley

    Matthew Wilcox
     

28 Feb, 2006

6 commits


15 Jan, 2006

1 commit


13 Jan, 2006

1 commit


16 Dec, 2005

5 commits


14 Dec, 2005

1 commit


02 Dec, 2005

1 commit

  • Some SCSI devices apparently get very confused if we try to use the
    echo buffer on a non-DT negotiated bus (this mirrors the problems of
    using PPR on non-LVD for some devices). The fix is to be far more
    conservative about when we use an echo buffer. With this patch, we'll
    now see what parameters are negotiated by the read only test, and only
    look for an echo buffer if DT is negotiated.

    Signed-off-by: James Bottomley

    James Bottomley
     

29 Oct, 2005

1 commit