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