1. 04 10月, 2008 10 次提交
  2. 29 9月, 2008 2 次提交
  3. 24 9月, 2008 1 次提交
    • J
      [SCSI] Fix hang with split requests · 44ea91c5
      James Bottomley 提交于
      Sometimes, particularly for USB devices with the last sector bug,
      requests get completed in chunks.  There's a bug in this in that if
      one of the chunks gets an error, we complete that chunk with an error
      but never move on to the remaining ones, leading to the request
      hanging (because it's not fully completed).
      
      Fix this by completing all remaining chunks if an error is encountered.
      
      Cc: Alan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      44ea91c5
  4. 14 9月, 2008 1 次提交
    • A
      [SCSI] qla2xxx: Defer enablement of RISC interrupts until ISP initialization completes. · 048feec5
      Andrew Vasquez 提交于
      Josip Rodin noted
      (http://article.gmane.org/gmane.linux.ports.sparc/10152) the
      driver oopsing during registration of an rport to the
      FC-transport layer with a backtrace indicating a dereferencing of
      an shost->shost_data equal to NULL.  David Miller identified a
      small window in driver logic where this could happen:
      
          > Look at how the driver registers the IRQ handler before the host has
          > been registered with the SCSI layer.
          >
          > That leads to a window of time where the shost hasn't been setup
          > fully, yet ISRs can come in and trigger DPC thread events, such as
          > loop resyncs, which expect the transport area to be setup.
          >
          > But it won't be setup, because scsi_add_host() hasn't finished yet.
          >
          > Note that in Josip's crash log, we don't even see the
          >
          >         qla_printk(KERN_INFO, ha, "\n"
          >             " QLogic Fibre Channel HBA Driver: %s\n"
          >             "  QLogic %s - %s\n"
          >             "  ISP%04X: %s @ %s hdma%c, host#=%ld, fw=%s\n",
          >  ...
          >
          > message yet.
          >
          > Which means that the crash occurs between qla2x00_request_irqs()
          > and printing that message.
      
      Close this window by enabling RISC interrupts after the host has
      been registered with the SCSI midlayer.
      Reported-by: NJosip Rodin <joy@entuzijast.net>
      Cc: Stable Tree <stable@kernel.org>
      Signed-off-by: NAndrew Vasquez <andrew.vasquez@qlogic.com>
      Signed-off-by: NJames Bottomley <James.Bottomley@HansenPartnership.com>
      048feec5
  5. 11 9月, 2008 1 次提交
  6. 29 8月, 2008 5 次提交
  7. 27 8月, 2008 2 次提交
    • F
      sg: restore command permission for TYPE_SCANNER · 14e507b8
      FUJITA Tomonori 提交于
      sg allowed any command for TYPE_SCANNER. The cmd_filter patchset
      doesn't. We can't change sg's permission since it might break the
      existing software.
      Signed-off-by: NFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      14e507b8
    • F
      block: move cmdfilter from gendisk to request_queue · abf54393
      FUJITA Tomonori 提交于
      cmd_filter works only for the block layer SG_IO with SCSI block
      devices. It breaks scsi/sg.c, bsg, and the block layer SG_IO with SCSI
      character devices (such as st). We hit a kernel crash with them.
      
      The problem is that cmd_filter code accesses to gendisk (having struct
      blk_scsi_cmd_filter) via inode->i_bdev->bd_disk. It works for only
      SCSI block device files. With character device files, inode->i_bdev
      leads you to struct cdev. inode->i_bdev->bd_disk->blk_scsi_cmd_filter
      isn't safe.
      
      SCSI ULDs don't expose gendisk; they keep it private. bsg needs to be
      independent on any protocols. We shouldn't change ULDs to expose their
      gendisk.
      
      This patch moves struct blk_scsi_cmd_filter from gendisk to
      request_queue, a common object, which eveyone can access to.
      
      The user interface doesn't change; users can change the filters via
      /sys/block/. gendisk has a pointer to request_queue so the cmd_filter
      code accesses to struct blk_scsi_cmd_filter.
      Signed-off-by: NFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      abf54393
  8. 24 8月, 2008 1 次提交
  9. 16 8月, 2008 17 次提交