1. 11 11月, 2017 2 次提交
  2. 01 11月, 2017 1 次提交
  3. 27 10月, 2017 1 次提交
    • C
      nvme: switch controller refcounting to use struct device · d22524a4
      Christoph Hellwig 提交于
      Instead of allocating a separate struct device for the character device
      handle embedd it into struct nvme_ctrl and use it for the main controller
      refcounting.  This removes double refcounting and gets us an automatic
      reference for the character device operations.  We keep ctrl->device as a
      pointer for now to avoid chaning printks all over, but in the future we
      could look into message printing helpers that take a controller structure
      similar to what other subsystems do.
      
      Note the delete_ctrl operation always already has a reference (either
      through sysfs due this change, or because every open file on the
      /dev/nvme-fabrics node has a refernece) when it is entered now, so we
      don't need to do the unless_zero variant there.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Reviewed-by: NHannes Reinecke <hare@suse.com>
      d22524a4
  4. 20 10月, 2017 1 次提交
    • C
      nvme-pci: add SGL support · a7a7cbe3
      Chaitanya Kulkarni 提交于
      This adds SGL support for NVMe PCIe driver, based on an earlier patch
      from Rajiv Shanmugam Madeswaran <smrajiv15 at gmail.com>. This patch
      refactors the original code and adds new module parameter sgl_threshold
      to determine whether to use SGL or PRP for IOs.
      
      The usage of SGLs is controlled by the sgl_threshold module parameter,
      which allows to conditionally use SGLs if average request segment
      size (avg_seg_size) is greater than sgl_threshold. In the original patch,
      the decision of using SGLs was dependent only on the IO size,
      with the new approach we consider not only IO size but also the
      number of physical segments present in the IO.
      
      We calculate avg_seg_size based on request payload bytes and number
      of physical segments present in the request.
      
      For e.g.:-
      
      1. blk_rq_nr_phys_segments = 2 blk_rq_payload_bytes = 8k
      avg_seg_size = 4K use sgl if avg_seg_size >= sgl_threshold.
      
      2. blk_rq_nr_phys_segments = 2 blk_rq_payload_bytes = 64k
      avg_seg_size = 32K use sgl if avg_seg_size >= sgl_threshold.
      
      3. blk_rq_nr_phys_segments = 16 blk_rq_payload_bytes = 64k
      avg_seg_size = 4K use sgl if avg_seg_size >= sgl_threshold.
      Signed-off-by: NChaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
      Reviewed-by: NKeith Busch <keith.busch@intel.com>
      Reviewed-by: NSagi Grimberg <sagi@grimberg.me>
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      a7a7cbe3
  5. 19 10月, 2017 1 次提交
  6. 25 9月, 2017 2 次提交
  7. 12 9月, 2017 5 次提交
  8. 30 8月, 2017 2 次提交
  9. 29 8月, 2017 2 次提交
  10. 18 8月, 2017 1 次提交
  11. 10 8月, 2017 1 次提交
  12. 26 7月, 2017 1 次提交
  13. 20 7月, 2017 3 次提交
  14. 10 7月, 2017 2 次提交
  15. 06 7月, 2017 2 次提交
  16. 03 7月, 2017 1 次提交
  17. 02 7月, 2017 4 次提交
  18. 29 6月, 2017 1 次提交
  19. 28 6月, 2017 6 次提交
  20. 15 6月, 2017 1 次提交
    • C
      nvme: move reset workqueue handling to common code · d86c4d8e
      Christoph Hellwig 提交于
      This moves the nvme_reset function from the PCIe driver to common code,
      renaming it to nvme_reset_ctrl in the process.  Additionally a new
      helper nvme_reset_ctrl_sync is added for the case where we want to
      wait for the reset.  To facilitate that the reset_work work structure is
      move to the common nvme_ctrl structure and the ->reset_ctrl method is
      removed.  For now the drivers initialize the reset_work with their own
      callback, but longer term we should move to callouts for specific
      parts of the reset process and move even more code to the core.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Reviewed-by: NSagi Grimberg <sagi@grimberg.me>
      d86c4d8e