1. 12 9月, 2022 1 次提交
  2. 04 9月, 2022 1 次提交
  3. 02 9月, 2022 1 次提交
  4. 06 7月, 2022 2 次提交
  5. 27 6月, 2022 1 次提交
  6. 02 6月, 2022 1 次提交
  7. 09 3月, 2022 2 次提交
  8. 08 2月, 2022 1 次提交
  9. 14 1月, 2022 1 次提交
  10. 07 12月, 2021 3 次提交
  11. 04 12月, 2021 1 次提交
  12. 21 10月, 2021 1 次提交
  13. 19 10月, 2021 1 次提交
  14. 18 10月, 2021 7 次提交
  15. 13 9月, 2021 1 次提交
    • M
      blk-mq: avoid to iterate over stale request · 67f3b2f8
      Ming Lei 提交于
      blk-mq can't run allocating driver tag and updating ->rqs[tag]
      atomically, meantime blk-mq doesn't clear ->rqs[tag] after the driver
      tag is released.
      
      So there is chance to iterating over one stale request just after the
      tag is allocated and before updating ->rqs[tag].
      
      scsi_host_busy_iter() calls scsi_host_check_in_flight() to count scsi
      in-flight requests after scsi host is blocked, so no new scsi command can
      be marked as SCMD_STATE_INFLIGHT. However, driver tag allocation still can
      be run by blk-mq core. One request is marked as SCMD_STATE_INFLIGHT,
      but this request may have been kept in another slot of ->rqs[], meantime
      the slot can be allocated out but ->rqs[] isn't updated yet. Then this
      in-flight request is counted twice as SCMD_STATE_INFLIGHT. This way causes
      trouble in handling scsi error.
      
      Fixes the issue by not iterating over stale request.
      
      Cc: linux-scsi@vger.kernel.org
      Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
      Reported-by: Nluojiaxing <luojiaxing@huawei.com>
      Signed-off-by: NMing Lei <ming.lei@redhat.com>
      Link: https://lore.kernel.org/r/20210906065003.439019-1-ming.lei@redhat.comSigned-off-by: NJens Axboe <axboe@kernel.dk>
      67f3b2f8
  16. 24 5月, 2021 4 次提交
  17. 06 4月, 2021 1 次提交
  18. 26 3月, 2021 1 次提交
  19. 29 9月, 2020 1 次提交
  20. 11 9月, 2020 1 次提交
    • M
      blk-mq: always allow reserved allocation in hctx_may_queue · 28500850
      Ming Lei 提交于
      NVMe shares tagset between fabric queue and admin queue or between
      connect_q and NS queue, so hctx_may_queue() can be called to allocate
      request for these queues.
      
      Tags can be reserved in these tagset. Before error recovery, there is
      often lots of in-flight requests which can't be completed, and new
      reserved request may be needed in error recovery path. However,
      hctx_may_queue() can always return false because there is too many
      in-flight requests which can't be completed during error handling.
      Finally, nothing can proceed.
      
      Fix this issue by always allowing reserved tag allocation in
      hctx_may_queue(). This is reasonable because reserved tags are supposed
      to always be available.
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Reviewed-by: NHannes Reinecke <hare@suse.de>
      Cc: David Milburn <dmilburn@redhat.com>
      Cc: Ewan D. Milne <emilne@redhat.com>
      Signed-off-by: NMing Lei <ming.lei@redhat.com>
      Signed-off-by: NJens Axboe <axboe@kernel.dk>
      28500850
  21. 04 9月, 2020 5 次提交
  22. 01 7月, 2020 1 次提交
  23. 29 6月, 2020 1 次提交