1. 14 Mar, 2024 1 commit
    • Chunguang Xu's avatar
      nvme: fix reconnection fail due to reserved tag allocation · de105068
      Chunguang Xu authored
      We found a issue on production environment while using NVMe over RDMA,
      admin_q reconnect failed forever while remote target and network is ok.
      After dig into it, we found it may caused by a ABBA deadlock due to tag
      allocation. In my case, the tag was hold by a keep alive request
      waiting inside admin_q, as we quiesced admin_q while reset ctrl, so the
      request maked as idle and will not process before reset success. As
      fabric_q shares tagset with admin_q, while reconnect remote target, we
      need a tag for connect command, but the only one reserved tag was held
      by keep alive command which waiting inside admin_q. As a result, we
      failed to reconnect admin_q forever. In order to fix this issue, I
      think we should keep two reserved tags for admin queue.
      
      Fixes: ed01fee2 ("nvme-fabrics: only reserve a single tag")
      Signed-off-by: default avatarChunguang Xu <chunguang.xu@shopee.com>
      Reviewed-by: default avatarSagi Grimberg <sagi@grimberg.me>
      Reviewed-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
      de105068
  2. 08 Mar, 2024 5 commits
  3. 07 Mar, 2024 2 commits
    • Uwe Kleine-König's avatar
      cdrom: gdrom: Convert to platform remove callback returning void · 0dc31b98
      Uwe Kleine-König authored
      The .remove() callback for a platform driver returns an int which makes
      many driver authors wrongly assume it's possible to do error handling by
      returning an error code. However the value returned is ignored (apart
      from emitting a warning) and this typically results in resource leaks.
      
      To improve here there is a quest to make the remove callback return
      void. In the first step of this quest all drivers are converted to
      .remove_new(), which already returns void. Eventually after all drivers
      are converted, .remove_new() will be renamed to .remove().
      
      Trivially convert this driver from always returning zero in the remove
      callback to the void returning variant.
      Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Link: https://lore.kernel.org/r/20240307180837.190626-2-u.kleine-koenig@pengutronix.deSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
      0dc31b98
    • Jens Axboe's avatar
      Merge tag 'nvme-6.9-2024-03-07' of git://git.infradead.org/nvme into for-6.9/block · 0f7223a3
      Jens Axboe authored
      Pull NVMe updates from Keith:
      
      "nvme updates for Linux 6.9
      
       - RDMA target enhancements (Max)
       - Fabrics fixes (Max, Guixin, Hannes)
       - Atomic queue_limits usage (Christoph)
       - Const use for class_register (Ricardo)
       - Identification error handling fixes (Shin'ichiro, Keith)"
      
      * tag 'nvme-6.9-2024-03-07' of git://git.infradead.org/nvme: (31 commits)
        nvme: clear caller pointer on identify failure
        nvme: host: fix double-free of struct nvme_id_ns in ns_update_nuse()
        nvme: fcloop: make fcloop_class constant
        nvme: fabrics: make nvmf_class constant
        nvme: core: constify struct class usage
        nvme-fabrics: typo in nvmf_parse_key()
        nvme-multipath: use atomic queue limits API for stacking limits
        nvme-multipath: pass queue_limits to blk_alloc_disk
        nvme: use the atomic queue limits update API
        nvme: cleanup nvme_configure_metadata
        nvme: don't query identify data in configure_metadata
        nvme: split out a nvme_identify_ns_nvm helper
        nvme: move common logic into nvme_update_ns_info
        nvme: move setting the write cache flags out of nvme_set_queue_limits
        nvme: move a few things out of nvme_update_disk_info
        nvme: don't use nvme_update_disk_info for the multipath disk
        nvme: move blk_integrity_unregister into nvme_init_integrity
        nvme: cleanup the nvme_init_integrity calling conventions
        nvme: move max_integrity_segments handling out of nvme_init_integrity
        nvme: remove nvme_revalidate_zones
        ...
      0f7223a3
  4. 06 Mar, 2024 32 commits