1. 24 1月, 2008 5 次提交
    • S
      [SCSI] aacraid: remove pigs in space · 8ce3eca4
      Salyzyn, Mark 提交于
      I was amazed at how much embedded space was present in the aacraid
      driver source files. Just selected five files from the set to clean up
      for now and the attached patch swelled to 73K in size!
      
      - Removed trailing space or tabs
      - Removed spaces embedded within tabs
      - Replaced leading 8 spaces with tabs
      - Removed spaces before )
      - Removed ClusterCommand as it was unused (noticed it as one triggered by above)
      - Replaced scsi_status comparison with 0x02, to compare against SAM_STATUS_CHECK_CONDITION.
      - Replaced a long series of spaces with tabs
      - Replaced some simple if...defined() with ifdef/ifndef
      Signed-off-by: NMark Salyzyn <aacraid@adaptec.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      8ce3eca4
    • S
      [SCSI] aacraid: respond to enclosure service events · 0995ad38
      Salyzyn, Mark 提交于
      Added support to respond to enclosure service events
      (controller AIFs) to add, online or offline physical targets
      reported to sg. Also added online and offlining of arrays.
      Removed an automatic variable definition in a sub block that
      hid an earlier definition, determined to be inert as the
      sub-block use did not interfere. Bumped the driver versioning
      to stamp the addition of this feature.
      Signed-off-by: NMark Salyzyn <aacraid@adaptec.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      0995ad38
    • S
      [SCSI] aacraid: OS panic after Adapter panic (hardening). · b6ef70f3
      Salyzyn, Mark 提交于
      In experiments in the lab we managed to trigger an Adapter firmware
      panic (BlinkLED) coincidentally while several pass-through ioctl
      command from the management software were outstanding on a bug only
      present on a class of RAID Adapters that require a hardware reset
      rather than a commanded reset. The net result was an attempt to time
      out the management software command as if it came from the SCSI layer
      resulting in an OS panic.
      
      Adapters that use commanded reset, management commands are returned
      failed by the Adapter correctly. The adapter firmware panic that
      resulted in this condition was also resolved, and there were no
      adapters in the field with this specific firmware bug so we do not
      expect any field reports. This is a rare or unlikely corner condition,
      and no reports have ever been forwarded from the field.
      Signed-off-by: NMark Salyzyn <aacraid@adaptec.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      b6ef70f3
    • S
      [SCSI] aacraid: fix big endian issues · a3940da5
      Salyzyn, Mark 提交于
      Big endian systems issues discovered in the aacraid driver. Somewhat
      reverses a patch from November 7th of last year that removed swap
      operations because they formerly were being assigned to an u8 array
      when they should have been assigned to an le32 array.
      
      This patch is largely inert for any little endian processor
      architecture. It resolves a bug in delivering the BlinkLED AIF event
      to registered applications when the adapter or associated hardware was
      reset due to ill health. A rare corner case occurrence, also largely
      unnoticed by any as it was a new (untested!) feature.
      Signed-off-by: NMark Salyzyn <aacraid@adaptec.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      a3940da5
    • S
      [SCSI] aacraid: add parameter to control FUA and SYNCHRONIZE_CACHE policy · 95e852e1
      Salyzyn, Mark 提交于
      aacraid.cache parameter, Disable Queue Flush commands:
              bit 0 - Disable FUA in WRITE SCSI commands
              bit 1 - Disable SYNCHRONIZE_CACHE SCSI command
              bit 2 - Disable only if Battery not protecting adapter supplied Cache
      
      e.g.: aacraid.cache=7 will disable the FUA and SYNCHRONIZE_CACHE
      commands if the adapter has reported that it's cache is battery backed
      up.
      
      This parameter permits experimentation with tradeoffs between
      performance and caching policy.
      Signed-off-by: NMark Salyzyn <aacraid@adaptec.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      95e852e1
  2. 12 1月, 2008 3 次提交
    • S
      [SCSI] aacraid: fix driver failure with Dell PowerEdge Expandable RAID Controller 3/Di · 94cf6ba1
      Salyzyn, Mark 提交于
      As reported in http://bugzilla.kernel.org/show_bug.cgi?id=3D9133 it was
      discovered that the PERC line of controllers lacked a key 64 bit
      ScatterGather capable SCSI pass-through function. The adapters are still
      capable of 64 bit ScatterGather I/O commands, but these two can not be
      mixed. This problem was exacerbated by the introduction of the SCSI
      Generic access to the DASD physical devices.
      
      The fix for users before this patch is applied is aacraid.dacmode=3D0 on
      the kernel command line to disable 64 bit I/O.
      
      The enclosed patch introduces a new adapter quirk and tries to limp
      along by enabling pass-through in situations where memory is 32 bit
      addressable on 64 bit machines, or disable the pass-through functions
      altogether. I expect that the check for 32 bit addressable memory to be
      controversial in that it can be incorrect in non-Dell non-Intel systems
      that PERC would never be installed under, the alternative is to disable
      pass-through in all cases which could be reported as another regression.
      
      Pass-through is used for SCSI Generic access to the physical devices, or
      for the management applications to properly function.
      
      In systems where this patch has disabled pass-through because it is
      unsupportable in combination with I/O performance, the user can choose
      to enable pass-through by turning off dacmode (aacraid.dacmode=3D0) or
      limiting the discovered kernel memory (mem=3D4G) with an associated loss
      in runtime performance. If we chose instead to turn off 64 bit dacmode
      for the adapters with this quirk, then this would be reported as another
      regression.
      Signed-off-by: NMark Salyzyn <aacraid@adaptec.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      94cf6ba1
    • C
      [SCSI] aacraid: don't assign cpu_to_le32(int) to u8 · f3307f72
      Christoph Hellwig 提交于
      On Wed, Nov 07, 2007 at 01:51:44PM -0500, Salyzyn, Mark wrote:
      > Christoph Hellwig [mailto:hch@infradead.org] sez:
      > > Did anyone run the driver through sparse to see if we have
      > > more issues like this?
      >
      > There are some warnings from sparse, none like this one. I will deal
      > with the warnings ...
      
      Actually there are a lot of endianess warnings, fortunately most of them
      harmless.  The patch below fixes all of them up (including the ones in
      the patch I replied to), except for aac_init_adapter which is really odd
      and I don't know what to do.
      
      [jejb fixed up rejections and checkpatch issues]
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Acked-by: NMark Salyzyn <mark_salyzyn@adaptec.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      f3307f72
    • S
      [SCSI] aacraid: forced reset override · f858317d
      Salyzyn, Mark 提交于
      Some of our vendors have requested that our adapters ignore the hardware
      reset attempts during recovery and have enforced this with changes in
      Adapter Firmware. Some of our customers have requested the option to be
      able to reset the adapter under adverse adapter failure, we even had a
      few defects reported here considering it a regression that the Adapter
      could not be reset. This patch addresses this dichotomy. The user can
      force the adapter to be reset if it supports the IOP_RESET_ALWAYS
      command, in cases where the adapter has been programmed to ignore the
      reset, by setting the aacraid.check_reset parameter to a value of -1.
      
      The driver will not reset an Adapter that does not support the reset
      command(s).
      
      This patch also fixes and cleans up some of the logic associated with
      resetting the adapter.
      Signed-off-by: NMark Salyzyn <aacraid@adaptec.com>
      Signed-off-by: NJames <James.Bottomley@HansenPartnership.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      f858317d
  3. 08 11月, 2007 2 次提交
  4. 13 10月, 2007 1 次提交
  5. 19 7月, 2007 1 次提交
  6. 18 6月, 2007 1 次提交
  7. 06 5月, 2007 1 次提交
  8. 01 4月, 2007 1 次提交
  9. 20 3月, 2007 4 次提交
    • M
      [SCSI] aacraid: Improved error handling · 03d44337
      Mark Haverkamp 提交于
      Received from Mark Salyzyn,
      
      This set of fixes improve error handling stability of the driver. A popular
      manifestation of the problems is an NULL pointer reference in the interrupt
      handler when referencing portions of the scsi command context, or in the
      scsi_done handling when an offlined device is referenced.
      
      The aacraid driver currently does not get notification of orphaned command
      completions due to devices going offline. The driver also fails to handle the
      commands that are finished by the error handler, and thus can complete again
      later at the hands of the adapter causing situations of completion of an
      invalid scsi command context. Test Unit Ready calls abort assuming that the
      abort was successful, but are not, and thus when the interrupt from the adapter
      occurs, they reference invalid command contexts. We add in a TIMED_OUT flag to
      inform the aacraid FIB context that the interrupt service should merely release
      the driver resources and not complete the command up. We take advantage of this
      with the abort handler as well for select abortable commands. And we detect and
      react if a command that can not be aborted is currently still outstanding to
      the controller when reissued by the retry mechanism.
      Signed-off-by: NMark Haverkamp <markh@linux-foundation.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      03d44337
    • M
      [SCSI] aacraid: Fix ioctl handling when adapter resets · 33bb3b29
      Mark Haverkamp 提交于
      Received from Mark Salyzyn,
      
      Outstanding ioctl calls still have some problems with aborting cleanly
      in the face of a reset iop recovery action should the adapter ever enter
      into a Firmware Assert (BlinkLED) condition. The enclosed patch resolves
      some uncovered flawed handling.
      Signed-off-by: NMark Haverkamp <markh@linux-foundation.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      33bb3b29
    • M
      [SCSI] aacraid: Fix struct element name issue · a8166a52
      Mark Haverkamp 提交于
      Received from Mark Salyzyn,
      
      This patch is to resolve a namespace issue that will result from a patch
      expected in the future that adds a new interface; rationalized as
      correcting a long term issue where hw_fib, instead of hw_fib_va, refers
      to the virtual address space and hw_fib_pa refers to the physical
      address space. A small fragment of this patch also cleans up an unused
      variable that was close to the patch fragments.
      Signed-off-by: NMark Haverkamp <markh@linux-foundation.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      a8166a52
    • M
      [SCSI] aacraid: add restart adapter platform function · 8418852d
      Mark Haverkamp 提交于
      Received from Mark Salyzyn,
      
      This patch updates the adapter restart function to deal with some
      adapters that have specific IOP reset needs. Since the code for
      restarting the adapter was in two places, changed over to utilizing a
      platform function in one place.
      Signed-off-by: NMark Haverkamp <markh@linux-foundation.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      8418852d
  10. 27 1月, 2007 1 次提交
    • M
      [SCSI] aacraid: rework communication support code · 28713324
      Mark Haverkamp 提交于
      Received from Mark Salyzyn,
      
      Replace all if/else communication transports with a platform function call.
      This is in recognition of the need to migrate to up-and-coming transports.
      Currently the Linux driver does not support two available communication
      transports provided by our products, these will be added in future patches, and
      will expand the platform function set.
      
      Signed-off-by Mark Haverkamp <markh@linux-foundation.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      28713324
  11. 23 11月, 2006 2 次提交
    • M
      [SCSI] aacraid: Abort management FIBs · d18b448f
      Mark Haverkamp 提交于
      Received from Mark Salyzyn:
      
      Add code to abort outstanding management ioctl fibs when the blinkLED recovery
      is performed. This code is 'clunky' and does not have any real feedback in that
      the reset could progress before the user application has gotten it's
      notification of command completion. We put a schedule() call to delay just the
      right amount for most cases, because we tried a spin and still managed to find
      cases where we would spin forever waiting for the management application to
      acknowledge the impending doom surrounding the cause of the BlinkLED. Will
      cause an oops in the context of the management application if we proceed too
      quickly. I view this as the lesser of many evils since currently if there are
      outstanding management ioctls during a need to reset/recover the adapter, the
      management application just locks up and waits forever. The best practices fix
      for this problem not going to be simple or easy (at least the fixes I imagine
      today); and we found a balance between the needs of the driver to proceed, and
      the applications that locked or confused that would hold back the driver. I
      just do not like the idea of a kernel oops in an application to deal with low
      priority, sluggish or misbehaving applications.
      Signed-off-by: NMark Haverkamp <markh@osdl.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      d18b448f
    • M
      [SCSI] aacraid: Detect Blinkled at startup · 33524b70
      Mark Haverkamp 提交于
      Received from Mark Salyzyn:
      
      Blinkled at startup is useful for catching Adapters in a lot of pain, in a
      BlinkLED assert, quickly; rather than waiting several minutes for commands to
      timeout.
      Signed-off-by: NMark Haverkamp <markh@osdl.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      33524b70
  12. 25 9月, 2006 1 次提交
  13. 24 9月, 2006 2 次提交
  14. 20 8月, 2006 2 次提交
  15. 23 6月, 2006 1 次提交
  16. 20 5月, 2006 2 次提交
    • M
      [SCSI] aacraid: remove unneeded list · 5b9851b5
      Mark Haverkamp 提交于
      Received From Mark Salyzyn
      
      The queue tracking is just not being used, not even for debugging. Information
      about outstanding commands can be acquired from the scsi structures.
      Signed-off-by: NMark Haverkamp <markh@osdl.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      5b9851b5
    • M
      [SCSI] aacraid: adjustable timeouts · 404d9a90
      Mark Haverkamp 提交于
      Received From Mark Salyzyn
      
      Add the ability to adjust for unusual corner case failures. Both of
      these additional module parameters deal with embedded, non-intel or
      complicated system scenarios.
      
      Aif_timeout can be increased past the default 2 minute timeout to drop
      application registrations when a system has an unusually high event load
      resulting from continuing management requests, or simultaneous builds,
      or sluggish user space as a result of system load.
      
      Startup_timeout can be increased past the default 3 minute timeout to
      drop an adapter initialization for systems that have a very large number
      of targets, or slow to spin-up targets, or a complicated set of array
      configurations that extend the time for the firmware to declare that it
      is operational. This timeout would only have an affect on non-intel
      based systems, as the (more patient) BIOS would generally be where the
      startup delay would be dealt with.
      Signed-off-by: NMark Haverkamp <markh@osdl.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      404d9a90
  17. 13 4月, 2006 2 次提交
  18. 28 2月, 2006 1 次提交
  19. 08 2月, 2006 1 次提交
  20. 05 2月, 2006 1 次提交
  21. 10 11月, 2005 1 次提交
  22. 07 11月, 2005 1 次提交
  23. 29 10月, 2005 1 次提交
  24. 27 9月, 2005 2 次提交
    • M
      [SCSI] aacraid: remove aac_insert_entry · 1640a2c3
      Mark Haverkamp 提交于
      Received from Mark Salyzyn from Adaptec.
      
      High Priority Queues have *never* been used in the entire history of the
      aac based adapters. Associated with this, aac_insert_entry can be
      removed, SavedIrql can be removed & padding variable can be removed.
      With the movement of SavedIrql out & replaced with an automatic variable
      qflags, the locking can be refined somewhat. The sparse warnings did not
      catch the need for byte swapping in the 'dprintk' debugging print
      macros, so fixed this up when this code was moved outside of the now
      refined locking.
      Signed-off-by: NMark Haverkamp <markh@osdl.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      1640a2c3
    • M
      [SCSI] aacraid: initialization timeout · 9203344c
      Mark Haverkamp 提交于
      Received from Mark Salyzyn from Adaptec.
      
      In the rare instances where the adapter, or the motherboard, is
      misbehaving; driver initialization or shutdown becomes problematic. By
      introducing a 3 minute timeout on the first interrupt driven command
      during initialization, or the issuance of the adapter shutdown command
      during driver unload, we can resolve the lockup problems induced by
      common (but rare) hardware misbehaviors.
      
      The timeout during initialization, should it occur, is accompanied by a
      message presented to the console and the logs indicating that the user
      should inspect and resolve problems with interrupt routing.
      Signed-off-by: NMark Haverkamp <markh@osdl.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
      9203344c