07 Sep, 2005

3 commits


29 Aug, 2005

4 commits


28 Aug, 2005

1 commit


15 Aug, 2005

1 commit


09 Aug, 2005

1 commit

  • We have some nasty issues with 2.6.12-rc6. Any request to scan on
    the lpfc or qla2xxx FC adapters will oops. What is happening is the
    system is defaulting to non-transport registered targets, which
    inherit the parent of the scan. On this second scan, performed by
    the attribute, the parent becomes the shost instead of the rport.
    The slave functions in the 2 FC adapters use starget_to_rport()
    routines, which incorrectly map the shost as an rport pointer.

    Additionally, this pointed out other weaknesses:
    - If the target structure is torn down outside of the transport,
    we have no method for it to be regenerated at the proper parent.
    - We have race conditions on the target being allocated by both
    the midlayer scan (parent=shost) and by the fc transport
    (parent=rport).

    Signed-off-by: James Bottomley

    James.Smart@Emulex.Com
     

08 Aug, 2005

1 commit

  • There are certain rogue devices (and the aic7xxx driver) that return
    BUSY or QUEUE_FULL forever. This code will apply a global timeout (of
    the total number of retries times the per command timer) to a given
    command. If it is exceeded, the command is completed regardless of its
    state.

    The patch also removes the unused field in the command: timeout and
    timeout_total.

    This solves the problem of detecting an endless loop in the mid-layer
    because of BUSY/QUEUE_FULL bouncing, but will not recover the device.
    In the aic7xxx case, the driver can be recovered by sending a bus reset,
    so possibly this should be tied into the error handler?

    Signed-off-by: James Bottomley

    James Bottomley
     

04 Aug, 2005

1 commit

  • This parameter is important only to people who take the time to tune the
    margin control settings, otherwise it's completely irrelevant. However,
    just in case anyone should want to do this, it's appropriate to include
    the parameter.

    I don't do anything with it in DV by design, so the parameter will come
    up as off by default, so if anyone actually wants to play with the
    margin control settings they'll have to enable it under the
    spi_transport class first.

    I also updated the transfer settings display to report all of the PPR
    settings instead of only DT, IU and QAS

    Signed-off-by: James Bottomley

    James Bottomley
     

31 Jul, 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
     

12 Jul, 2005

1 commit


27 Jun, 2005

4 commits


26 Jun, 2005

1 commit

  • scsi_add_host is the proper place to set the device, but people copy
    the scsi_set_device usage from older drivers again and again.

    note that this leaves some legacy drivers like qlogicisp/qlogicfc
    without pci association in sysfs, but they're scheduled to go away soon
    anyway.

    Signed-off-by: James Bottomley

    Christoph Hellwig
     

24 Jun, 2005

1 commit


27 May, 2005

1 commit


26 May, 2005

3 commits

  • This patch basically allows any HBA attached to the SPI transport class
    to declare an extra area which the mid-layer will allocate as part of
    its device and target allocations.

    Signed-off-by: James Bottomley

    James Bottomley
     
  • This gives the HBA driver notice when a target is created and
    destroyed to allow it to manage its own target based allocations
    accordingly.

    This is a much reduced verson of the original patch sent in by
    James.Smart@Emulex.com

    Signed-off-by: James Bottomley

    James Bottomley
     
  • a) TYPE_SDAD renamed to TYPE_RBC and taken to scsi.h
    b) in sbp2.c remapping of TYPE_RPB to TYPE_DISK turned off
    c) relevant places in midlayer and sd.c taught to accept TYPE_RBC
    d) sd.c::sd_read_cache_type() looks into page 6 when dealing with
    TYPE_RBC - these guys have writeback cache flag there and are not guaranteed
    to have page 8 at all.
    e) sd_read_cache_type() got an extra sanity check - it checks that
    it got the page it asked for before using its contents. And screams if
    mismatch had happened. Rationale: there are broken devices out there that
    are "helpful" enough to go for "I don't have a page you've asked for, here,
    have another one". For example, PL3507 had been caught doing just that...
    f) sbp2 sets sdev->use_10_for_rw and sdev->use_10_for_ms instead
    of bothering to remap READ6/WRITE6/MOD_SENSE, so most of the conversions
    in there are gone now.

    Incidentally, I wonder if USB storage devices that have no
    mode page 8 are simply RBC ones. I haven't touched that, but it might
    be interesting to check...

    Signed-off-by: Al Viro
    Signed-off-by: James Bottomley

    Al Viro
     

21 May, 2005

2 commits


19 Apr, 2005

6 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