1. 13 2月, 2011 1 次提交
  2. 25 1月, 2011 2 次提交
  3. 24 1月, 2011 6 次提交
    • K
      [SCSI] mpt2sas: fix Integrated Raid unsynced on shutdown problem · 3a9c913a
      Kashyap, Desai 提交于
      Issue:
      IR shutdown(sending) and IR shutdown(complete) messages not
      listed in /var/log/messages when driver is removed.
      
      The driver needs to issue a MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED
      request when the driver is unloaded so the IR metadata journal is updated.
      If this request is not sent, then the volume would need a "check
      consistency" issued on the next bootup if the volume was roamed from one
      initiator to another. The current driver supports this feature only when the
      system is rebooted, however this also need to be supported if the driver is
      unloaded
      
      Fix:
      To fix this issue, the driver is going
      to need to call the _scsih_ir_shutdown prior to reporting
      the volumes missing from the OS, hence the device handles
      are still present.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Cc: stable@kernel.org
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      3a9c913a
    • K
      [SCSI] mpt2sas: Kernel Panic during Large Topology discovery · 4224489f
      Kashyap, Desai 提交于
      There was a configuration page timing out during the initial port
      enable at driver load time. The port enable would fail, and this would
      result in the driver unloading itself, meanwhile the driver was accessing
      freed memory in another context resulting in the panic.  The fix is to
      prevent access to freed memory once the driver had issued the diag reset
      which woke up the sleeping port enable process.  The routine
      _base_reset_handler was reorganized so the last sleeping process woken up was
      the port_enable.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Cc: stable@kernel.org
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      4224489f
    • K
      [SCSI] mpt2sas: Fix the race between broadcast asyn event and scsi command completion · ec07a053
      Kashyap, Desai 提交于
      False timeout after hard resets, there were two issues which leads
      to timeout.
      (1) Panic because of invalid memory access in the broadcast asyn
      event processing routine due to a race between accessing the scsi command
      pointer from broadcast asyn event processing thread and completing
      the same scsi command from the interrupt context.
      (2)  Broadcast asyn event notifcations are not handled due to events
      ignored while the broadcast asyn event is activity being processed
      from the event process kernel thread.
      
      In addition, changed the ABRT_TASK_SET to ABORT_TASK in the
      broadcast async event processing routine.   This is less disruptive to other
      request that generate Broadcast Asyn Primitives besides target
      reset. e.g clear reservations, microcode download,and mode select.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Cc: stable@kernel.org
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      ec07a053
    • K
      [SCSI] mpt2sas: Correct resizing calculation for max_queue_depth · 11e1b961
      Kashyap, Desai 提交于
      The ioc->hba_queue_depth is not properly resized when the controller
      firmware reports that it supports more outstanding IO than what can be fit
      inside the reply descriptor pool depth. This is reproduced by setting the
      controller global credits larger than 30,000. The bug results in an
      incorrect sizing of the queues. The fix is to resize the queue_size by
      dividing queue_diff by two.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Cc: stable@kernel.org
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      11e1b961
    • K
      [SCSI] mpt2sas: fix internal device reset for older firmware prior to MPI Rev K · efe82a16
      Kashyap, Desai 提交于
      The "internal device reset complete" event is not supported
      for older firmware prior to MPI Rev K We added
      a check in the driver so the "internal device reset" event is
      ignored for older firmware.  When ignored, the tm_busy flag doesn't
      get set nor cleared.  Without this fix, IO queues would be froozen
      indefinetly after the "internal device reset" event, as the "complete" event
      never sent to clear the flag.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Cc: stable@kernel.org
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      efe82a16
    • K
      [SCSI] mpt2sas: Fix device removal handshake for zoned devices · 4dc2757a
      Kashyap, Desai 提交于
      When zoning end devices, the driver is not sending device
      removal handshake alogrithm to firmware. This results in controller
      firmware not sending sas topology add events the next time the device is
      added. The fix is the driver should be doing the device removal handshake
      even though the PHYSTATUS_VACANT bit is set in the PhyStatus of the
      event data. The current design is avoiding the handshake when the
      VACANT bit is set in the phy status.
      Signed-off-by: NKashyap Desai <kashyap.desai@lsi.com>
      Cc: stable@kernel.org
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      4dc2757a
  4. 14 1月, 2011 2 次提交
    • T
      [SCSI] sd,sr: kill compat SDEV_MEDIA_CHANGE event · f4013c38
      Tejun Heo 提交于
      SDEV_MEDIA_CHANGE event was first added by commit a341cd0f (SCSI: add
      asynchronous event notification API) for SATA AN support and then
      extended to cover generic media change events by commit 285e9670
      ([SCSI] sr,sd: send media state change modification events).
      
      This event was mapped to block device in userland with all properties
      stripped to simulate CHANGE event on the block device, which, in turn,
      was used to trigger further userspace action on media change.
      
      The recent addition of disk event framework kept this event for
      backward compatibility but it turns out to be unnecessary and causes
      erratic and inefficient behavior.  The new disk event generates proper
      events on the block devices and the compat events are mapped to block
      device with all properties stripped, so the block device ends up
      generating multiple duplicate events for single actual event.
      
      This patch removes the compat event generation from both sr and sd as
      suggested by Kay Sievers.  Both existing and newer versions of udev
      and the associated tools will behave better with the removal of these
      events as they from the beginning were expecting events on the block
      devices.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NKay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      f4013c38
    • T
      [SCSI] sd: implement sd_check_events() · 2bae0093
      Tejun Heo 提交于
      Replace sd_media_change() with sd_check_events().
      
      * Move media removed logic into set_media_not_present() and
        media_not_present() and set sdev->changed iff an existing media is
        removed or the device indicates UNIT_ATTENTION.
      
      * Make sd_check_events() sets sdev->changed if previously missing
        media becomes present.
      
      * Event is reported only if sdev->changed is set.
      
      This makes media presence event reported if scsi_disk->media_present
      actually changed or the device indicated UNIT_ATTENTION.  For backward
      compatibility, SDEV_EVT_MEDIA_CHANGE is generated each time
      sd_check_events() detects media change event.
      
      [jejb: fix boot failure]
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NJens Axboe <jaxboe@fusionio.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      2bae0093
  5. 06 1月, 2011 1 次提交
  6. 05 1月, 2011 1 次提交
    • T
      [SCSI] sd,sr: kill compat SDEV_MEDIA_CHANGE event · 140e3008
      Tejun Heo 提交于
      SDEV_MEDIA_CHANGE event was first added by commit a341cd0f (SCSI: add
      asynchronous event notification API) for SATA AN support and then
      extended to cover generic media change events by commit 285e9670
      ([SCSI] sr,sd: send media state change modification events).
      
      This event was mapped to block device in userland with all properties
      stripped to simulate CHANGE event on the block device, which, in turn,
      was used to trigger further userspace action on media change.
      
      The recent addition of disk event framework kept this event for
      backward compatibility but it turns out to be unnecessary and causes
      erratic and inefficient behavior.  The new disk event generates proper
      events on the block devices and the compat events are mapped to block
      device with all properties stripped, so the block device ends up
      generating multiple duplicate events for single actual event.
      
      This patch removes the compat event generation from both sr and sd as
      suggested by Kay Sievers.  Both existing and newer versions of udev
      and the associated tools will behave better with the removal of these
      events as they from the beginning were expecting events on the block
      devices.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NKay Sievers <kay.sievers@vrfy.org>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      140e3008
  7. 04 1月, 2011 3 次提交
  8. 03 1月, 2011 1 次提交
  9. 31 12月, 2010 9 次提交
  10. 28 12月, 2010 1 次提交
    • T
      [SCSI] sd: implement sd_check_events() · eface65c
      Tejun Heo 提交于
      Replace sd_media_change() with sd_check_events().
      
      * Move media removed logic into set_media_not_present() and
        media_not_present() and set sdev->changed iff an existing media is
        removed or the device indicates UNIT_ATTENTION.
      
      * Make sd_check_events() sets sdev->changed if previously missing
        media becomes present.
      
      * Event is reported only if sdev->changed is set.
      
      This makes media presence event reported if scsi_disk->media_present
      actually changed or the device indicated UNIT_ATTENTION.  For backward
      compatibility, SDEV_EVT_MEDIA_CHANGE is generated each time
      sd_check_events() detects media change event.
      
      [jejb: fix boot failure]
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NJens Axboe <jaxboe@fusionio.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@suse.de>
      eface65c
  11. 24 12月, 2010 13 次提交