1. 24 11月, 2014 10 次提交
  2. 12 11月, 2014 3 次提交
  3. 02 8月, 2013 1 次提交
    • D
      esp_scsi: Fix tag state corruption when autosensing. · 21af8107
      David S. Miller 提交于
      Meelis Roos reports a crash in esp_free_lun_tag() in the presense
      of a disk which has died.
      
      The issue is that when we issue an autosense command, we do so by
      hijacking the original command that caused the check-condition.
      
      When we do so we clear out the ent->tag[] array when we issue it via
      find_and_prep_issuable_command().  This is so that the autosense
      command is forced to be issued non-tagged.
      
      That is problematic, because it is the value of ent->tag[] which
      determines whether we issued the original scsi command as tagged
      vs. non-tagged (see esp_alloc_lun_tag()).
      
      And that, in turn, is what trips up the sanity checks in
      esp_free_lun_tag().  That function needs the original ->tag[] values
      in order to free up the tag slot properly.
      
      Fix this by remembering the original command's tag values, and
      having esp_alloc_lun_tag() and esp_free_lun_tag() use them.
      Reported-by: NMeelis Roos <mroos@linux.ee>
      Tested-by: NMeelis Roos <mroos@linux.ee>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      21af8107
  4. 06 4月, 2012 1 次提交
  5. 10 5月, 2011 1 次提交
  6. 01 5月, 2011 1 次提交
  7. 17 11月, 2010 1 次提交
    • J
      SCSI host lock push-down · f281233d
      Jeff Garzik 提交于
      Move the mid-layer's ->queuecommand() invocation from being locked
      with the host lock to being unlocked to facilitate speeding up the
      critical path for drivers who don't need this lock taken anyway.
      
      The patch below presents a simple SCSI host lock push-down as an
      equivalent transformation.  No locking or other behavior should change
      with this patch.  All existing bugs and locking orders are preserved.
      
      Additionally, add one parameter to queuecommand,
      	struct Scsi_Host *
      and remove one parameter from queuecommand,
      	void (*done)(struct scsi_cmnd *)
      
      Scsi_Host* is a convenient pointer that most host drivers need anyway,
      and 'done' is redundant to struct scsi_cmnd->scsi_done.
      
      Minimal code disturbance was attempted with this change.  Most drivers
      needed only two one-line modifications for their host lock push-down.
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      Acked-by: NJames Bottomley <James.Bottomley@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f281233d
  8. 19 1月, 2010 1 次提交
    • F
      [SCSI] mac_esp: fix PIO mode, take 2 · 02507a80
      Finn Thain 提交于
      The mac_esp PIO algorithm no longer works in 2.6.31 and crashes my Centris
      660av. So here's a better one.
      
      Also, force async with esp_set_offset() rather than esp_slave_configure().
      
      One of the SCSI drives I tested still doesn't like the PIO mode and fails
      with "esp: esp0: Reconnect IRQ2 timeout" (the same drive works fine in
      PDMA mode).
      
      This failure happens when esp_reconnect_with_tag() tries to read in two
      tag bytes but the chip only provides one (0x20). I don't know what causes
      this. I decided not to waste any more time trying to fix it because the
      best solution is to rip out the PIO mode altogether and use the DMA
      engine.
      Signed-off-by: NFinn Thain <fthain@telegraphics.com.au>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      02507a80
  9. 30 12月, 2008 1 次提交
  10. 12 7月, 2008 1 次提交
  11. 26 6月, 2008 1 次提交
  12. 25 6月, 2008 1 次提交
    • D
      [SCSI] esp: Fix OOPS in esp_reset_cleanup(). · eadc49b1
      David S. Miller 提交于
      OOPS reported by Friedrich Oslage <bluebird@porno-bullen.de>
      
      The problem here is that tp->starget is set every time a lun
      is allocated for a particular target so we can catch the
      sdev_target parent value.
      
      The reset handler uses the NULL'ness of this value to determine
      which targets are active.
      
      But esp_slave_destroy() does not NULL out this value when appropriate.
      
      So for every target that doesn't respond, the SCSI bus scan causes
      a stale pointer to be left here, with ensuing crashes like you're
      seeing.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Cc: Stable Tree <stable@kernel.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      eadc49b1
  13. 28 4月, 2008 1 次提交
  14. 11 12月, 2007 1 次提交
  15. 13 10月, 2007 1 次提交
  16. 26 9月, 2007 1 次提交
  17. 18 6月, 2007 1 次提交
  18. 14 6月, 2007 1 次提交
  19. 01 6月, 2007 1 次提交
  20. 08 5月, 2007 1 次提交
  21. 28 4月, 2007 1 次提交
  22. 27 4月, 2007 1 次提交
    • D
      [SCSI] SUNESP: Complete driver rewrite to version 2.0 · cd9ad58d
      David S. Miller 提交于
      Major features:
      
      1) Tagged queuing support.
      2) Will properly negotiate for synchronous transfers even on
         devices that reject the wide negotiation message, such as
         CDROMs
      3) Significantly lower kernel stack usage in interrupt
         handler path by elimination of function vector arrays,
         replaced by a top-level switch statement state machine.
      4) Uses generic scsi infrastructure as much as possible to
         avoid code duplication.
      5) Automatic request of sense data in response to CHECK_CONDITION
      6) Portable to other platforms using ESP such as DEC and Sun3
         systems.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cd9ad58d