15 Jul, 2007

1 commit


20 Jun, 2007

1 commit

  • When reporting SCSI devices to the SCSI midlayer, use the FCP LUN as
    LUN reported to the SCSI layer. With this approach, zfcp does not have
    to create unique LUNS, and this code can be removed.

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

    Christof Schmitt
     

18 Apr, 2007

1 commit

  • The following patch adds support for sysfs/uevent modalias
    attribute for scsi devices (like disks, tapes, cdroms etc),
    based on whatever current sd.c, sr.c, st.c and osst.c drivers
    supports.

    The modalias format is like this:

    scsi:type-0x04

    (for TYPE_WORM, handled by sr.c now).

    Several comments.

    o This hexadecimal type value is because all TYPE_XXX constants
    in include/scsi/scsi.h are given in hex, but __stringify() will
    not convert them to decimal (so it will NOT be scsi:type-4).
    Since it does not really matter in which format it is, while
    both modalias in module and modalias attribute match each other,
    I descided to go for that 0x%02x format (and added a comment in
    include/scsi/scsi.h to keep them that way), instead of changing
    them all to decimal.

    o There was no .uevent routine for SCSI bus. It might be a good
    idea to add some more ueven environment variables in there.

    o osst.c driver handles tapes too, like st.c, but only SOME tapes.
    With this setup, hotplug scripts (or whatever is used by the
    user) will try to load both st and osst modules for all SCSI
    tapes found, because both modules have scsi:type-0x01 alias).
    It is not harmful, but one extra module is no good either.
    It is possible to solve this, by exporting more info in
    modalias attribute, including vendor and device identification
    strings, so that modalias becomes something like
    scsi:type-0x12:vendor-Adaptec LTD:device-OnStream Tape Drive
    and having that, match for all 3 attributes, not only device
    type. But oh well, vendor and device strings may be large,
    and they do contain spaces and whatnot.
    So I left them for now, awaiting for comments first.

    Signed-off-by: Michael Tokarev
    Signed-off-by: James Bottomley

    Michael Tokarev
     

21 Mar, 2007

1 commit

  • Implement SBC START/STOP management. sdev->mange_start_stop is added.
    When it's set to one, sd STOPs the device on suspend and shutdown and
    STARTs it on resume. sdev->manage_start_stop defaults is in sdev
    instead of scsi_disk cdev to allow ->slave_config() override the
    default configuration but is exported under scsi_disk sysfs node as
    sdev->allow_restart is.

    When manage_start_stop is zero (the default value), this patch doesn't
    introduce any behavior change.

    Signed-off-by: Tejun Heo

    Rejections fixed and
    Signed-off-by: James Bottomley

    Tejun Heo
     

12 Mar, 2007

1 commit


17 Feb, 2007

1 commit


12 Oct, 2006

1 commit

  • Since it often takes around 20-30 seconds to scan a scsi bus, it's
    highly advantageous to do this in parallel with other things. The bulk
    of this patch is ensuring that devices don't change numbering, and that
    all devices are discovered prior to trying to start init. For those
    who build SCSI as modules, there's a new scsi_wait_scan module that will
    ensure all bus scans are finished.

    This patch only handles drivers which call scsi_scan_host. Fibre Channel,
    SAS, SATA, USB and Firewire all need additional work.

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

    Matthew Wilcox
     

01 Oct, 2006

1 commit


20 Mar, 2006

1 commit


15 Mar, 2006

1 commit


28 Feb, 2006

3 commits

  • In order to use the new execute_in_process_context() API, you have to
    provide it with the work storage, which I do in SCSI in scsi_device and
    scsi_target, but which also means that we can no longer queue up the
    target reaps, so instead I moved the target to a state model which
    allows target_alloc to detect if we've received a dying target and wait
    for it to be gone. Hopefully, this should also solve the target
    namespace race.

    Signed-off-by: James Bottomley

    James Bottomley
     
  • Some non-standard SCSI targets or protocols, such as USB UFI, report "no
    LUN present" by setting the Peripheral Device Type to 0x1f and the
    Peripheral Qualifier to 0 (not 3 as the standard requires) in the INQUIRY
    response. This patch (as650b) adds a new target flag and code to
    accomodate such targets.

    Signed-off-by: Alan Stern
    Signed-off-by: James Bottomley

    Alan Stern
     
  • As devfs has been disabled from the kernel tree for a number of months
    now (5 to be exact), here's a patch against 2.6.16-rc1-git1 that removes
    support for it from the SCSI subsystem.

    The patch also removes the scsi_disk devfs_name field as it's no longer
    needed.

    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: James Bottomley

    Greg KH
     

27 Jan, 2006

1 commit

  • When the scsi_execute_async interface was added it ended up reducing
    the flexibility of userspace to send arbitrary scsi commands through
    sg using SG_IO. The SG_IO interface allows userspace to specify the
    CDB length. This is now ignored in scsi_execute_async and it is
    guessed using the COMMAND_SIZE macro, which is not always correct,
    particularly for vendor specific commands. This patch adds a cmd_len
    parameter to the scsi_execute_async interface to allow the caller
    to specify the length of the CDB.

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

    brking@us.ibm.com
     

15 Dec, 2005

1 commit

  • Add scsi helpers to create really-large-requests and convert
    scsi-ml to scsi_execute_async().

    Per Jens's previous comments, I placed this function in scsi_lib.c.
    I made it follow all the queue's limits - I think I did at least :), so
    I removed the warning on the function header.

    I think the scsi_execute_* functions should eventually take a request_queue
    and be placed some place where the dm-multipath hw_handler can use them
    if that failover code is going to stay in the kernel. That conversion
    patch will be sent in another mail though.

    Signed-off-by: Mike Christie
    Signed-off-by: James Bottomley

    Mike Christie
     

14 Dec, 2005

1 commit


29 Oct, 2005

2 commits

  • New dev_printk wrappers, which allow us to shrink code, and
    eliminate direct references to host/channel/id/lun members:
    scmd_printk()

    Introduce wrappers for highly common idioms, which may also help us
    eliminate some ->{channel,id} references in the future:
    {scmd,sdev}_id()
    {scmd,sdev}_channel()

    The scmd_* wrappers are present in scsi/scsi_device.h because they all
    employ the dereference chain cmd->device->$member. We would prefer to
    use static inline functions rather than macros, but that would have a

    Rejections fixed up and
    Signed-off-by: James Bottomley

    Jeff Garzik
     
  • This should eliminate (at least in the mid layer) to make numeric
    assumptions about any of the enumeration variables. As a side effect,
    it will also make all the messages consistent and line us up nicely for
    the error logging strategy (if it ever shows itself again).

    Signed-off-by: James Bottomley

    James Bottomley
     

26 Sep, 2005

1 commit


11 Sep, 2005

1 commit

  • The original API returned either an ERR_PTR() or a refcounted sdev.
    Unfortunately, if it's successful, you need to do a scsi_device_put() on
    the sdev otherwise the refcounting is wrong.

    Everyone seems to expect that scsi_add_device() should be callable
    without doing the ref put, so alter the API so it is (we still have
    __scsi_add_device with the original behaviour).

    The only actual caller that needs altering is the one in firewire ...
    not because it gets this right, but because it acts on the error if one
    is returned.

    Acked-by: Stefan Richter
    Signed-off-by: James Bottomley

    James Bottomley
     

29 Aug, 2005

3 commits


15 Jul, 2005

1 commit


14 Jul, 2005

1 commit

  • One of the issues we had was reverting the midlayers lun value
    into the 8byte lun value that we wanted to send to the device.
    Historically, there's been some combination of byte swapping,
    setting high/low, etc. There's also been no common thread between
    how our driver did it and others. I also got very confused as
    to why byteswap routines were being used.

    Anyway, this patch is a LLDD-callable function that reverts the
    midlayer's lun value, stored in an int, to the 8-byte quantity
    (note: this is not the real 8byte quantity, just the same amount
    that scsilun_to_int() was able to convert and store originally).

    This also solves the dilemma of the thread:
    http://marc.theaimsgroup.com/?l=linux-kernel&m=112116767118981&w=2

    A patch for the lpfc driver to use this function will be along
    in a few days (batched with other patches).

    Signed-off-by: James Bottomley

    James.Smart@Emulex.Com
     

26 May, 2005

1 commit


19 Apr, 2005

2 commits


17 Apr, 2005

3 commits

  • - add a comment to the device structure that the device_busy field
    is now protected by the request_queue->queue_lock
    - null out sdev->request_queue after the queue is released to trap
    any (and there shouldn't be any) use after the queue is freed.

    Signed-off-by: James Bottomley

     
  • The current problem seen is that the queue lock is actually in the
    SCSI device structure, so when that structure is freed on device
    release, we go boom if the queue tries to access the lock again.

    The fix here is to move the lock from the scsi_device to the queue.

    Signed-off-by: James Bottomley

     
  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds