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