24 Jan, 2008

1 commit

  • While trying to convert the SPI transport class to attribute groups, I
    discovered that we don't actually have any transport configure points
    for either the target or the host. This patch adds these missing
    transport class triggers. The host one is simply done after the add,
    the target one tries to be more clever and add it after devices may have
    been placed on the target (so the device configure will have set up the
    target parameters).

    Signed-off-by: James Bottomley

    James Bottomley
     

03 Jan, 2008

1 commit

  • A recent bug report:

    http://bugzilla.kernel.org/show_bug.cgi?id=9674

    Was caused because the ULDs now set their own prep functions, but
    don't necessarily reset the prep function back to the SCSI default
    when they are removed. This leads to panics if commands are sent to
    the device after the module is removed because the prep_fn is still
    pointing to the old module code. The fix for this is to implement a
    bus remove method that resets the prep_fn pointer correctly before
    calling the ULD specific driver remove method.

    Signed-off-by: James Bottomley

    James Bottomley
     

04 Nov, 2007

1 commit


18 Oct, 2007

1 commit


15 Oct, 2007

1 commit

  • * master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (207 commits)
    [SCSI] gdth: fix CONFIG_ISA build failure
    [SCSI] esp_scsi: remove __dev{init,exit}
    [SCSI] gdth: !use_sg cleanup and use of scsi accessors
    [SCSI] gdth: Move members from SCp to gdth_cmndinfo, stage 2
    [SCSI] gdth: Setup proper per-command private data
    [SCSI] gdth: Remove gdth_ctr_tab[]
    [SCSI] gdth: switch to modern scsi host registration
    [SCSI] gdth: gdth_interrupt() gdth_get_status() & gdth_wait() fixes
    [SCSI] gdth: clean up host private data
    [SCSI] gdth: Remove virt hosts
    [SCSI] gdth: Reorder scsi_host_template intitializers
    [SCSI] gdth: kill gdth_{read,write}[bwl] wrappers
    [SCSI] gdth: Remove 2.4.x support, in-kernel changelog
    [SCSI] gdth: split out pci probing
    [SCSI] gdth: split out eisa probing
    [SCSI] gdth: split out isa probing
    gdth: Make one abuse of scsi_cmnd less obvious
    [SCSI] NCR5380: Use scsi_eh API for REQUEST_SENSE invocation
    [SCSI] usb storage: use scsi_eh API in REQUEST_SENSE execution
    [SCSI] scsi_error: Refactoring scsi_error to facilitate in synchronous REQUEST_SENSE
    ...

    Linus Torvalds
     

13 Oct, 2007

4 commits

  • This changes the uevent buffer functions to use a struct instead of a
    long list of parameters. It does no longer require the caller to do the
    proper buffer termination and size accounting, which is currently wrong
    in some places. It fixes a known bug where parts of the uevent
    environment are overwritten because of wrong index calculations.

    Many thanks to Mathieu Desnoyers for finding bugs and improving the
    error handling.

    Signed-off-by: Kay Sievers
    Cc: Mathieu Desnoyers
    Cc: Cornelia Huck
    Signed-off-by: Greg Kroah-Hartman

    Kay Sievers
     
  • Signed-off-by: Kay Sievers
    Signed-off-by: James Bottomley

    Kay Sievers
     
  • This removes the unused sysfs attribute overwriting logic for most of
    the attributes, and plugs them into the driver core default attribute
    creation.

    Without this patch, at the time of the events for the SCSI LUN's, there
    will be no sysfs files, because their creation is delayed until the sd
    driver has spun up the disks, which might take several seconds. It is the
    last WAIT_FOR_SYSFS rule in the default udev setup which can be removed
    with this change.

    Signed-off-by: Kay Sievers
    Signed-off-by: Hannes Reinecke
    Signed-off-by: James Bottomley

    Kay Sievers
     
  • This adds supported_mode and active_mode attributes to
    /sys/class/sys_host/hostX/ for specifying the mode that a lld supports
    and the currently activated mode. The output format is similar to fc
    rport roles:

    luce:/sys/class/scsi_host/host0$ cat supported_mode
    Initiator
    luce:/sys/class/scsi_host/host0$ cat active_mode
    Initiator

    The mode values uses bitmap since we would support dual-mode llds in
    the future like this:

    luce:/sys/class/scsi_host/host0$ cat supported_mode
    Initiator, Target

    The supported_mode attribute looks at a scsi_host_template and the
    active_mode attribute looks at a scsi_host. We would add a hook to a
    scsi_host_template to change the active_mode attribute
    dynamically. But now there is no hook since no lld supports that
    feature.

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

    FUJITA Tomonori
     

21 Jul, 2007

1 commit

  • Currently, bsg doesn't make class backlinks (a process whereby you'd get
    a link to bsg in the device directory in the same way you get one for
    sg). This is because the bsg device is uninitialised, so the class
    device has nothing it can attach to. The fix is to make the bsg device
    point to the cdevice of the entity creating the bsg, necessitating
    changing the bsg_register_queue() prototype into a form that takes the
    generic device.

    Acked-by: FUJITA Tomonori
    Signed-off-by: James Bottomley

    James Bottomley
     

20 Jul, 2007

1 commit

  • This patch moves the bsg registration into SCSI so that bsg no longer
    has a dependency on the scsi_interface_register API.

    This can be viewed as a temporary expedient until we can get universal
    bsg binding sorted out properly. Also use the sdev bus_id as the
    generic bsg name (to avoid clashes with the queue name).

    Acked-by: FUJITA Tomonori
    Acked-by: Jens Axboe
    Signed-off-by: James Bottomley

    James Bottomley
     

19 Jul, 2007

1 commit

  • This patch contains the following cleanups:
    - make needlessly global functions static
    - every file should #include the headers containing the prototypes for
    it's global functions

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: James Bottomley

    Adrian Bunk
     

22 May, 2007

1 commit

  • With libata converted to use sdev->manage_start_stop for suspend and
    resume, sht->suspend/resume() has no user left and low level
    suspend/ressume should be taken care of by low level driver's
    suspend/resume callbacks (e.g. PCI or PCMCIA driver callbacks). This
    patch removes sht->suspend/resume() callbacks.

    This change is suggested by Christoph Hellwig.

    Signed-off-by: Tejun Heo
    Cc: Christoph Hellwig
    Signed-off-by: James Bottomley

    Tejun Heo
     

06 May, 2007

1 commit

  • * master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (87 commits)
    [SCSI] fusion: fix domain validation loops
    [SCSI] qla2xxx: fix regression on sparc64
    [SCSI] modalias for scsi devices
    [SCSI] sg: cap reserved_size values at max_sectors
    [SCSI] BusLogic: stop using check_region
    [SCSI] tgt: fix rdma transfer bugs
    [SCSI] aacraid: fix aacraid not finding device
    [SCSI] aacraid: Correct SMC products in aacraid.txt
    [SCSI] scsi_error.c: Add EH Start Unit retry
    [SCSI] aacraid: [Fastboot] Panics for AACRAID driver during 'insmod' for kexec test.
    [SCSI] ipr: Driver version to 2.3.2
    [SCSI] ipr: Faster sg list fetch
    [SCSI] ipr: Return better qc_issue errors
    [SCSI] ipr: Disrupt device error
    [SCSI] ipr: Improve async error logging level control
    [SCSI] ipr: PCI unblock config access fix
    [SCSI] ipr: Fix for oops following SATA request sense
    [SCSI] ipr: Log error for SAS dual path switch
    [SCSI] ipr: Enable logging of debug error data for all devices
    [SCSI] ipr: Add new PCI-E IDs to device table
    ...

    Linus Torvalds
     

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
     

16 Mar, 2007

1 commit

  • This patch (as868) adds a helper routine for device drivers that need
    to set up a callback to perform some action in a different process's
    context. This is intended for use by attribute methods that want to
    unregister themselves or their parent device. Attribute method calls
    are mutually exclusive with unregistration, so such actions cannot be
    taken directly.

    Two attribute methods are converted to use the new helper routine: one
    for SCSI device deletion and one for System/390 ccwgroup devices.

    Signed-off-by: Alan Stern
    Cc: Hugh Dickins
    Cc: Cornelia Huck
    Cc: Oliver Neukum
    Signed-off-by: Linus Torvalds

    Alan Stern
     

17 Feb, 2007

1 commit

  • This patch will affect the CDB in INQUIRY commands sent to LUNs above 0
    when LUN-0 reports a scsi_level of 0; the LUN bits will no longer be set
    in the second byte of the CDB. This is as it should be. Nevertheless,
    it's possible that some wacky device might be adversely affected. I doubt
    anyone will complain...

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

    Alan Stern
     

22 Nov, 2006

1 commit

  • Pass the work_struct pointer to the work function rather than context data.
    The work function can use container_of() to work out the data.

    For the cases where the container of the work_struct may go away the moment the
    pending bit is cleared, it is made possible to defer the release of the
    structure by deferring the clearing of the pending bit.

    To make this work, an extra flag is introduced into the management side of the
    work_struct. This governs auto-release of the structure upon execution.

    Ordinarily, the work queue executor would release the work_struct for further
    scheduling or deallocation by clearing the pending bit prior to jumping to the
    work function. This means that, unless the driver makes some guarantee itself
    that the work_struct won't go away, the work function may not access anything
    else in the work_struct or its container lest they be deallocated.. This is a
    problem if the auxiliary data is taken away (as done by the last patch).

    However, if the pending bit is *not* cleared before jumping to the work
    function, then the work function *may* access the work_struct and its container
    with no problems. But then the work function must itself release the
    work_struct by calling work_release().

    In most cases, automatic release is fine, so this is the default. Special
    initiators exist for the non-auto-release case (ending in _NAR).

    Signed-Off-By: David Howells

    David Howells
     

26 Oct, 2006

1 commit


01 Jul, 2006

1 commit


10 Jun, 2006

1 commit


24 Mar, 2006

1 commit

  • At the moment libata doesn't pass pm_message_t down ata_device_suspend.
    This causes drives to be powered down when we just want a freeze,
    causing unnecessary wear and tear. This patch gets pm_message_t passed
    down so that it can be used to determine whether to power down the
    drive.

    Signed-off-by: Nigel Cunningham

    drivers/scsi/libata-core.c | 5 +++--
    drivers/scsi/libata-scsi.c | 4 ++--
    drivers/scsi/scsi_sysfs.c | 2 +-
    include/linux/libata.h | 4 ++--
    include/scsi/scsi_host.h | 2 +-
    5 files changed, 9 insertions(+), 8 deletions(-)
    Signed-off-by: Jeff Garzik

    Nigel Cunningham
     

28 Feb, 2006

1 commit

  • 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
     

15 Feb, 2006

1 commit

  • There's a bug in releasing scsi_device where the release function
    actually frees the block queue. However, the block queue release
    calls flush_work(), which requires process context (the scsi_device
    structure may release from irq context). Update the release function
    to invoke via the execute_in_process_context() API.

    Also clean up the scsi_target structure releasing via this API.

    Signed-off-by: James Bottomley

    James Bottomley
     

15 Jan, 2006

1 commit

  • When James Smart fixed the issue of the userspace scan atributes
    crashing the system with the FC transport class he added a patch to
    let the transport class check if the parent is valid for a given
    transport class.

    When adding support for the integrated raid of fusion sas devices
    we ran into a problem with that, as it didn't allow adding virtual
    raid volumes without the transport class knowing about it.

    So this patch adds a user_scan attribute instead, that takes over from
    scsi_scan_host_selected if the transport class sets it and thus lets
    the transport class control the user-initiated scanning. As this
    plugs the hole about user-initiated scanning the target_parent hook
    goes away and we rely on callers of the scanning routines to do
    something sensible.

    For SAS this meant I had to switch from a spinlock to a mutex to
    synchronize the topology linked lists, in FC they were completely
    unsynchronized which seems wrong.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: James Bottomley

    Christoph Hellwig
     

13 Jan, 2006

1 commit


07 Jan, 2006

1 commit

  • This patch adds suspend patch to libata, and ata_piix in particular. For
    most low level drivers, they should just need to add the 4 hooks to
    work. As I can only test ata_piix, I didn't enable it for more
    though.

    Suspend support is the single most important feature on a notebook, and
    most new notebooks have sata drives. It's quite embarrassing that we
    _still_ do not support this. Right now, it's perfectly possible to
    suspend the drive in mid-transfer.

    Signed-off-by: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jens Axboe
     

14 Dec, 2005

1 commit


07 Nov, 2005

1 commit

  • There's an oops that sometimes shows up with SCSI transport classes in
    sysfs_hash_and_remove. The problem is that now, because of the class to
    device and vice versa symlinks, all classes have to be removed from
    visibility *before* the device is removed from visibility.

    The transport class trigger points violate this, so bring them back into
    conformance.

    Signed-off-by: James Bottomley

    James Bottomley
     

19 Sep, 2005

2 commits

  • We fix the oops by enforcing the host state model. There have also
    been two extra states added: SHOST_CANCEL_RECOVERY and
    SHOST_DEL_RECOVERY so we can take the model through host removal while
    the recovery thread is active.

    Signed-off-by: James Bottomley

    James Bottomley
     
  • This patch (as545) fixes the list traversals in __scsi_remove_target and
    scsi_forget_host. In each case the existing code list_for_each_entry_safe
    in an _unsafe_ manner, because the list was not protected from outside
    modification while the iteration was running.

    The new scsi_forget_host routine takes the moderately controversial step
    of iterating over devices for removal rather than iterating over targets.
    This makes more sense to me because the current scheme treats targets as
    second-class citizens, created and removed on demand, rather than as
    objects corresponding to actual hardware. (Also I couldn't figure out any
    safe way to iterate over the target list, since it's not so easy to tell
    when a target has already been removed.)

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

    Alan Stern
     

16 Sep, 2005

1 commit


09 Sep, 2005

1 commit


31 Jul, 2005

1 commit


24 Jun, 2005

1 commit


21 Jun, 2005

2 commits


17 Apr, 2005

2 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

     
  • 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