25 Sep, 2006

1 commit


24 Sep, 2006

2 commits


19 Sep, 2006

1 commit


08 Sep, 2006

3 commits


05 Sep, 2006

1 commit

  • This patch adds the following functionality to the FC transport:

    - dev_loss_tmo LLDD callback :
    Called to essentially confirm the deletion of an rport. Thus, it is
    called whenever the dev_loss_tmo fires, or when the rport is deleted
    due to other circumstances (module unload, etc). It is expected that
    the callback will initiate the termination of any outstanding i/o on
    the rport.

    - fast_io_fail_tmo and LLD callback:
    There are some cases where it may take a long while to truly determine
    device loss, but the system is in a multipathing configuration that if
    the i/o was failed quickly (faster than dev_loss_tmo), it could be
    redirected to a different path and completed sooner.

    Many thanks to Mike Reed who cleaned up the initial RFC in support
    of this post.

    The original RFC is at:
    http://marc.theaimsgroup.com/?l=linux-scsi&m=115505981027246&w=2

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     

03 Sep, 2006

5 commits

  • During discussions with Mike Christie, I became convinced that we needed
    a larger vendor id. This patch extends the id from 32 to 64 bits.

    This applies on top of the prior patches that add SCSI transport events
    via netlink.

    Signed-off-by: James Smart
    Signed-off-by: James Bottomley

    James Smart
     
  • This patch formally adds support for the posting of FC events via netlink.
    It is a followup to the original RFC at:
    http://marc.theaimsgroup.com/?l=linux-scsi&m=114530667923464&w=2
    and the initial posting at:
    http://marc.theaimsgroup.com/?l=linux-scsi&m=115507374832500&w=2

    The patch has been updated to optimize the send path, per the discussions
    in the initial posting.

    Per discussions at the Storage Summit and at OLS, we are to use netlink for
    async events from transports. Also per discussions, to avoid a netlink
    protocol per transport, I've create a single NETLINK_SCSITRANSPORT protocol,
    which can then be used by all transports.

    This patch:
    - Creates new files scsi_netlink.c and scsi_netlink.h, which contains the
    single and shared definitions for the SCSI Transport. It is tied into the
    base SCSI subsystem intialization.
    Contains a single interface routine, scsi_send_transport_event(), for a
    transport to send an event (via multicast to a protocol specific group).
    - Creates a new scsi_netlink_fc.h file, which contains the FC netlink event
    messages
    - Adds 3 new routines to the fc transport:
    fc_get_event_number() - to get a FC event #
    fc_host_post_event() - to send a simple FC event (32 bits of data)
    fc_host_post_vendor_event() - to send a Vendor unique event, with
    arbitrary amounts of data.

    Note: the separation of event number allows for a LLD to send a standard
    event, followed by vendor-specific data for the event.

    Note: This patch assumes 2 prior fc transport patches have been installed:
    http://marc.theaimsgroup.com/?l=linux-scsi&m=115555807316329&w=2
    http://marc.theaimsgroup.com/?l=linux-scsi&m=115581614930261&w=2

    Sorry - next time I'll do something like making these individual
    patches of the same posting when I know they'll be posted closely
    together.

    Signed-off-by: James Smart

    Tidy up configuration not to make SCSI always select NET

    Signed-off-by: James Bottomley

    James Smart
     
  • And use it in the stex driver.

    Signed-off-by: James Bottomley

    James Bottomley
     
  • It is possible that a ctask could be completing and getting
    cleaned up at the same time, we are finishing up the last
    data transfer. This could then result in the data transfer
    code using stale or invalid values. This patch adds a refcount
    to the ctask. When the count goes to zero then we know the
    transmit thread and recv thread or softirq are not touching
    it and we can safely release it.

    The eh should not need to grab a reference because it only cleans
    up a task if it has both the xmit mutex and recv lock (or recv
    side suspended).

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

    Mike Christie
     
  • iSCSI RFC states that the first burst length must be smaller than the
    max burst length. We currently assume targets will be good, but that may
    not be the case, so this patch adds a check.

    This patch also moves the unsol data out offset to the lib so the LLDs
    do not have to track it.

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

    Mike Christie
     

31 Aug, 2006

1 commit

  • This patch adds support for sharing tag maps at the host level
    (i.e. either every queue [LUN] has its own tag map or there's a single
    one for the entire host). This formulation is primarily intended to
    help single issue queue hardware, like the aic7xxx

    Signed-off-by: James Bottomley

    James Bottomley
     

29 Aug, 2006

1 commit

  • This is the end point of the separate aic94xx driver based on the
    original driver and transport class from Luben Tuikov

    The log of the separate development is:

    Alexis Bruemmer:
    o aic94xx: fix hotplug/unplug for expanderless systems
    o aic94xx: disable split completion timer/setting by default
    o aic94xx: wide port off expander support
    o aic94xx: remove various inline functions
    o aic94xx: use bitops
    o aic94xx: remove queue comment
    o aic94xx: remove sas_common.c
    o aic94xx: sas remove depot's
    o aic94xx: use available list_for_each_entry_safe_reverse()
    o aic94xx: sas header file merge

    James Bottomley:
    o aic94xx: fix TF_TMF_NO_CTX processing
    o aic94xx: convert to request_firmware interface
    o aic94xx: fix hotplug/unplug
    o aic94xx: add link error counts to the expander phys
    o aic94xx: add transport class phy reset capability
    o aic94xx: remove local_attached flag
    o Remove README
    o Fixup Makefile variable for libsas rename
    o Rename sas->libsas
    o aic94xx: correct return code for sas_discover_event
    o aic94xx: use parent backlink port
    o aic94xx: remove channel abstraction
    o aic94xx: fix routing algorithms
    o aic94xx: add backlink port
    o aic94xx: fix cascaded expander properties
    o aic94xx: fix sleep under lock
    o aic94xx: fix panic on module removal in complex topology
    o aic94xx: make use of the new sas_port
    o rename sas_port to asd_sas_port
    o Fix for eh_strategy_handler move
    o aic94xx: move entirely over to correct transport class formulation
    o remove last vestages of sas_rphy_alloc()
    o update for eh_timed_out move
    o Preliminary expander support for aic94xx
    o sas: remove event thread
    o minor warning cleanups
    o remove last vestiges of id mapping arrays
    o Further updates
    o Convert aic94xx over entirely to the transport class end device and
    o update aic94xx/sas to use the new sas transport class end device
    o [PATCH] aic94xx: attaching to the sas transport class
    o Add missing completion removal from prior patch
    o [PATCH] aic94xx: attaching to the sas transport class
    o Build fixes from akpm

    Jeff Garzik:
    o [scsi aic94xx] Remove ->owner from PCI info table

    Luben Tuikov:
    o initial aic94xx driver

    Mike Anderson:
    o aic94xx: fix panic on module insertion
    o aic94xx: stub out SATA_DEV case
    o aic94xx: compile warning cleanups
    o aic94xx: sas_alloc_task
    o aic94xx: ref count update
    o aic94xx nexus loss time value
    o [PATCH] aic94xx: driver assertion in non-x86 BIOS env

    Randy Dunlap:
    o libsas: externs not needed

    Robert Tarte:
    o aic94xx: sequence patch - fixes SATA support

    Signed-off-by: James Bottomley

    James Bottomley
     

28 Aug, 2006

2 commits

  • This flag denotes local attachment of the phy. There are two problems
    with it:

    1) It's actually redundant ... you can get the same information simply
    by seeing whether a host is the phys parent
    2) we condition a lot of phy parameters on it on the false assumption
    that we can only control local phys. I'm wiring up phy resets in the
    aic94xx now, and it will be able to reset non-local phys as well.

    I fixed 2) by moving the local check into the reset and stats function
    of the mptsas, since that seems to be the only HBA that can't
    (currently) control non-local phys.

    Signed-off-by: James Bottomley

    James Bottomley
     
  • James Bottomley
     

20 Aug, 2006

2 commits


07 Aug, 2006

2 commits

  • - Replace scsi_device_types array API with scsi_device_type function API.
    Gets rid of a lot of common code, as well as being easier to use.
    - Add the new device types in SPC4 r05a, and rename some of the older ones.
    - Reformat the printing of inquiry data; now fits on one line and
    includes PQ.

    I think I've addressed all the feedback from the previous versions. My
    current test box prints:

    scsi 2:0:1:0: Direct access HP 18.2G ATLAS10K3_18_SCA HP05 PQ: 0 ANSI: 2

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

    Matthew Wilcox
     
  • These aren't used anymore since the field in scsi_cmnd where it was
    stored has been removed.

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

    Christoph Hellwig
     

29 Jul, 2006

4 commits

  • We currently try to allocate a max_recv_data_segment_length
    which can be very large (default is 64K), and common uses
    are up to 1MB. It is very very difficult to allocte this
    much contiguous memory and it turns out we never even use it.
    We really only need a couple of pages, so this patch has us
    allocates just what we know what we need today.

    Later if vendors start adding vendor specific data and
    we need to handle large buffers we can do this, but for
    the last 4 years we have not seen anyone do this or request
    it.

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

    Mike Christie
     
  • When we enter recovery and flush the running commands
    we cannot freee the connection before flushing the commands.
    Some commands may have a reference to the connection
    that needs to be released before. iscsi_stop was forcing
    the term and suspend too early and was causing a oops
    in iser, so this patch removes those callbacks all together
    and allows the LLD to handle that detail.

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

    Mike Christie
     
  • Abort handler fixes.

    If a connection is dropped and reconnected while an abort is
    running then we should assume the recovery code will clean up
    the abort. Not doing so causes a oops.

    And if a command completes then we get the status for the abort, we do not
    need to call into the LLD to cleanup the resources. Doing this causes
    and oops in iser because it ends up freeing some resources twice.

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

    Mike Christie
     
  • The iscsi tcp code can pluck multiple rt2s from the tasks's r2tqueue
    in the xmit code. This can result in the task being queued on the xmit queue
    but gettting completed at the same time.

    This patch fixes the above bug by making the fifo a list so
    we always remove the entry on the list del.

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

    Mike Christie
     

12 Jul, 2006

1 commit


10 Jul, 2006

1 commit

  • Currently struct scsi_cmnd has various fields that are used to backup
    original data after the corresponding fields have been overridden for
    EH commands. This means drivers can easily get at it and misuse it.
    Due to the old_ naming this doesn't happen for most of them, but two
    that have different names have been used wrong a lot (see previous
    patch). Another downside is that they unessecarily bloat the scsi_cmnd
    size.

    This patch moves them onstack in scsi_send_eh_cmnd to fix those two
    issues aswell as allowing future EH fixes like moving the EH command
    submissions to use SG lists like everything else.

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

    Christoph Hellwig
     

09 Jul, 2006

1 commit

  • Some SAS HBAs don't want to go to the trouble of tracking port numbers,
    so they'd simply like to say "add this port and give it a number".
    This is especially beneficial from the hotplug point of view, since
    tracking ports and the available number space can be a real pain.

    The current implementation uses an incrementing number per expander to
    add the port on. However, since there can never be more ports than
    there are phys, a later implementation will try to be more intelligent
    about this.

    Signed-off-by: James Bottomley

    James Bottomley
     

05 Jul, 2006

1 commit

  • * git://git.infradead.org/hdrinstall-2.6:
    Remove export of include/linux/isdn/tpam.h
    Remove and from userspace export
    Restrict headers exported to userspace for SPARC and SPARC64
    Add empty Kbuild files for 'make headers_install' in remaining arches.
    Add Kbuild file for Alpha 'make headers_install'
    Add Kbuild file for SPARC 'make headers_install'
    Add Kbuild file for IA64 'make headers_install'
    Add Kbuild file for S390 'make headers_install'
    Add Kbuild file for i386 'make headers_install'
    Add Kbuild file for x86_64 'make headers_install'
    Add Kbuild file for PowerPC 'make headers_install'
    Add generic Kbuild files for 'make headers_install'
    Basic implementation of 'make headers_check'
    Basic implementation of 'make headers_install'

    Linus Torvalds
     

29 Jun, 2006

7 commits

  • This patch adds or modifies the transport class functions
    used to notify userspace of session state events.

    We modify the session addition up event and add a destruction event
    to notify userspace of session creation, relogin and destruction.

    And we modify the conn error event to be sent by broadcast
    since multiple listeners may want to listen for it.

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

    Mike Christie
     
  • So the drivers do not use the channel numbers, but some do
    use the target numbers. We were just adding some goofy
    variable that just increases for the target nr. This is useless
    for software iscsi because it is always zero. And for qla4xxx
    the target nr is actually the index of the target/session
    in its FW or FLASH tables. We needed to expose this to userspace
    so apps could access those numbers so this patch just adds the
    target nr to the iscsi session creation functions. This way
    when qla4xxx's Hw thinks a session is at target nr 4
    in its hw, it is exposed as that number in sysfs.

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

    Mike Christie
     
  • qla4xxx is initialized in two steps like other HW drivers.
    It allocates the host, sets up the HW, then adds the host.
    For iscsi part of HW setup is setting up persistent iscsi
    sessions. At that time, the interupts are off and the driver
    is not completely set up so we just want to allocate them.
    We do not want to add them to sysfs and expose them to userspace
    because userspace could try to do lots of fun things with them
    like scanning and at that time the driver is not ready.

    So this patch breakes up the session creation like other
    functions that use the driver model in two the alloc
    and add parts. When the driver is ready, it can then add
    the sessions and userspace can begin using them.

    This also fixes a bug in the addition error patch where
    we forgot to do a get on the session.

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

    Mike Christie
     
  • I do not remember what I was thinking when we added the channel
    as a argument to the session create function. It was probably
    due to too much cut and paste work from the FC transport class.

    The channel is meaningless for iscsi drivers so this patch drops
    its usage everywhere in the iscsi related code.

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

    Mike Christie
     
  • Reduce duplication in the software iscsi_transport modules by
    adding a libiscsi function to handle the common grunt work.

    This also has the drivers return specifc -EXXX values for different
    errors so userspace can finally handle them in a sane way.

    Also just pass the sysfs buffers to the drivers so HW iscsi can
    get/set its string values, like targetname, and initiatorname.

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

    Mike Christie
     
  • Patch from david.somayajulu@qlogic.com:

    Add target discovery event. We may have a setup where the iscsi traffic
    is on a different netowrk than the other network traffic. In this case
    we will want to do discovery though the iscsi card. This patch adds
    a event to the transport class that can be used by hw iscsi cards that
    support this.

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

    Mike Christie
     
  • this patch introduces a port object, separates out ports and phys,
    with ports becoming the primary objects of the tree.

    Signed-off-by: James Bottomley

    James Bottomley
     

27 Jun, 2006

1 commit


26 Jun, 2006

1 commit

  • This patch simplifies "good_bytes" computation in sd_rw_intr().
    sd: "good_bytes" computation is always done in terms of the resolution
    of the device's medium, since after that it is the number of good bytes
    we pass around and other layers/contexts (as opposed ot sd) can translate
    that to their own resolution (block layer:512). It also makes
    scsi_io_completion() processing more straightforward, eliminating the
    3rd argument to the function.

    It also fixes a couple of bugs like not checking return value,
    using "break" instead of "return;", etc.

    I've been running with this patch for some time now on a
    test (do-it-all) system.

    Signed-off-by: Luben Tuikov
    Signed-off-by: James Bottomley

    Luben Tuikov
     

23 Jun, 2006

1 commit


22 Jun, 2006

1 commit

  • * master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (85 commits)
    [SCSI] 53c700: remove reliance on deprecated cmnd fields
    [SCSI] hptiop: don't use cmnd->bufflen
    [SCSI] hptiop: HighPoint RocketRAID 3xxx controller driver
    [SCSI] aacraid: small misc. cleanups
    [SCSI] aacraid: Update supported product information
    [SCSI] aacraid: Fix return code interpretation
    [SCSI] scsi_transport_sas: fix panic in sas_free_rphy
    [SCSI] remove RQ_SCSI_* flags
    [SCSI] remove scsi_request infrastructure
    [SCSI] mptfusion: change driver revision to 3.03.10
    [SCSI] mptfc: abort of board reset leaves port dead requiring reboot
    [SCSI] mptfc: fix fibre channel infinite request/response loop
    [SCSI] mptfc: set fibre channel fw target missing timers to one second
    [SCSI] mptfusion: move fc event/reset handling to mptfc
    [SCSI] spi transport: don't allow dt to be set on SE or HVD buses
    [SCSI] aic7xxx: expose the bus setting to sysfs
    [SCSI] scsi: remove Documentation/scsi/cpqfc.txt
    [SCSI] drivers/scsi: Use ARRAY_SIZE macro
    [SCSI] Remove last page_address from dc395x.c
    [SCSI] hptiop: HighPoint RocketRAID 3xxx controller driver
    ...

    Fixed up conflicts in drivers/message/fusion/mptbase.c manually (due to
    the sparc interrupt cleanups)

    Linus Torvalds