From: "Matias Bjørling" <m@bjorling.me> To: willy@linux.intel.com, keith.busch@intel.com, sbradshaw@micron.com, axboe@fb.com, tom.leiming@gmail.com, hch@infradead.org, rlnelson@google.com Cc: linux-kernel@vger.kernel.org, linux-nvme@lists.infradead.org, "Matias Bjørling" <m@bjorling.me> Subject: [PATCH v12] Convert NVMe driver to blk-mq Date: Fri, 15 Aug 2014 20:16:43 +0200 [thread overview] Message-ID: <1408126604-10611-1-git-send-email-m@bjorling.me> (raw) Hi all, Thanks to Keith and Jens for feedback. Three fixes have been added. The current patch is on top of 3.16-rc6, together with the patches from Willy's master tree. A branch with the patch on top can be found here: https://github.com/MatiasBjorling/linux-collab nvmemq_review and the separate changes can be found in the nvmemq_v12 branch. Changes since v11: * remove unused dev->q_suspended. * remove unused "queued" label. * Revert replacement of nvmeq->hctx with nvmeq->tags. It allowed an use-after-free error to occur when all nvme queues wasn't assigned. Changes since v10: * Rebased on top of Linus' v3.16-rc6. * Incorporated the feedback from Christoph: a. Insert comment regarding the timeout flow. b. Moved tags into nvmeq instead of hctx. c. Moved initialization of tags and nvmeq outside of init_hctx. d. Refactor submission of commands in the request queue path. e. Fixes for WARN_ON and BUG_ON. * Fixed a missing blk_put_request during abort. * Converted the "Async event request" patch into the request model. Changes since v9: * Rebased on top of Linus' v3.16-rc3. * Ming noted that we should remember to kick the request queue after requeue. * Jens noted a couple of superfluous warnings. * Christoph is removed from the contribution section. Instead he is going to be added as reviewed-by. Changes since v8: * QUEUE_FLAG_VIRT_HOLE was renamed to QUEUE_FLAG_SG_GAPS * Previous revertion of patches lost the IRQ affinity hint * Removed test code in nvme_reset_notify Changes since v7: * Jens implemented support for QUEUE_FLAG_VIRT_HOLE to limit requests to a continuous range of virtual memory. * Keith fixed up the abortion logic. * Usual style fixups Changes since v6: * Rebased on top of Matthew's master and Jens' for-linus * A couple of style fixups Changes since v5: * Splits are now supported directly within blk-mq * Remove nvme_queue->cpu_mask variable * Remove unnecessary null check * Style fixups Changes since v4: * Fix timeout retries * Fix naming in nvme_init_hctx * Fix racy behavior of admin queue in nvme_dev_remove * Fix wrong return values in nvme_queue_request * Put cqe_seen back * Introduce abort_completion for killing timed out I/Os * Move locks outside of nvme_submit_iod * Various renaming and style fixes Changes since v3: * Added abortion logic * Fixed possible race on abortion * Removed req data with flush. Handled by by blk-mq * Added safety check for submitting user rq to admin queue. * Use dev->online_queues for nr_hw_queues * Fix loop with initialization in nvme_create_io_queues * Style fixups Changes since v2: * rebased on top of current 3.16/core. * use blk-mq queue management for spreading io queues * removed rcu handling and allocated all io queues up front for mgmt by blk-mq * removed the need for hotplugging notification * fixed flush data handling * fixed double free of spinlock * various cleanup Matias Bjørling (1): NVMe: Convert to blk-mq drivers/block/nvme-core.c | 1324 ++++++++++++++++++--------------------------- drivers/block/nvme-scsi.c | 8 +- include/linux/nvme.h | 15 +- 3 files changed, 537 insertions(+), 810 deletions(-) -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: m@bjorling.me (Matias Bjørling) Subject: [PATCH v12] Convert NVMe driver to blk-mq Date: Fri, 15 Aug 2014 20:16:43 +0200 [thread overview] Message-ID: <1408126604-10611-1-git-send-email-m@bjorling.me> (raw) Hi all, Thanks to Keith and Jens for feedback. Three fixes have been added. The current patch is on top of 3.16-rc6, together with the patches from Willy's master tree. A branch with the patch on top can be found here: https://github.com/MatiasBjorling/linux-collab nvmemq_review and the separate changes can be found in the nvmemq_v12 branch. Changes since v11: * remove unused dev->q_suspended. * remove unused "queued" label. * Revert replacement of nvmeq->hctx with nvmeq->tags. It allowed an use-after-free error to occur when all nvme queues wasn't assigned. Changes since v10: * Rebased on top of Linus' v3.16-rc6. * Incorporated the feedback from Christoph: a. Insert comment regarding the timeout flow. b. Moved tags into nvmeq instead of hctx. c. Moved initialization of tags and nvmeq outside of init_hctx. d. Refactor submission of commands in the request queue path. e. Fixes for WARN_ON and BUG_ON. * Fixed a missing blk_put_request during abort. * Converted the "Async event request" patch into the request model. Changes since v9: * Rebased on top of Linus' v3.16-rc3. * Ming noted that we should remember to kick the request queue after requeue. * Jens noted a couple of superfluous warnings. * Christoph is removed from the contribution section. Instead he is going to be added as reviewed-by. Changes since v8: * QUEUE_FLAG_VIRT_HOLE was renamed to QUEUE_FLAG_SG_GAPS * Previous revertion of patches lost the IRQ affinity hint * Removed test code in nvme_reset_notify Changes since v7: * Jens implemented support for QUEUE_FLAG_VIRT_HOLE to limit requests to a continuous range of virtual memory. * Keith fixed up the abortion logic. * Usual style fixups Changes since v6: * Rebased on top of Matthew's master and Jens' for-linus * A couple of style fixups Changes since v5: * Splits are now supported directly within blk-mq * Remove nvme_queue->cpu_mask variable * Remove unnecessary null check * Style fixups Changes since v4: * Fix timeout retries * Fix naming in nvme_init_hctx * Fix racy behavior of admin queue in nvme_dev_remove * Fix wrong return values in nvme_queue_request * Put cqe_seen back * Introduce abort_completion for killing timed out I/Os * Move locks outside of nvme_submit_iod * Various renaming and style fixes Changes since v3: * Added abortion logic * Fixed possible race on abortion * Removed req data with flush. Handled by by blk-mq * Added safety check for submitting user rq to admin queue. * Use dev->online_queues for nr_hw_queues * Fix loop with initialization in nvme_create_io_queues * Style fixups Changes since v2: * rebased on top of current 3.16/core. * use blk-mq queue management for spreading io queues * removed rcu handling and allocated all io queues up front for mgmt by blk-mq * removed the need for hotplugging notification * fixed flush data handling * fixed double free of spinlock * various cleanup Matias Bj?rling (1): NVMe: Convert to blk-mq drivers/block/nvme-core.c | 1324 ++++++++++++++++++--------------------------- drivers/block/nvme-scsi.c | 8 +- include/linux/nvme.h | 15 +- 3 files changed, 537 insertions(+), 810 deletions(-) -- 1.9.1
next reply other threads:[~2014-08-15 18:17 UTC|newest] Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-08-15 18:16 Matias Bjørling [this message] 2014-08-15 18:16 ` [PATCH v12] Convert NVMe driver to blk-mq Matias Bjørling 2014-08-15 18:16 ` [PATCH v12] NVMe: Convert " Matias Bjørling 2014-08-15 18:16 ` Matias Bjørling 2014-08-18 22:49 ` Keith Busch 2014-08-18 22:49 ` Keith Busch 2014-08-21 12:07 ` Matias Bjørling 2014-08-21 12:07 ` Matias Bjørling 2014-08-21 14:19 ` Keith Busch 2014-08-21 14:19 ` Keith Busch
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1408126604-10611-1-git-send-email-m@bjorling.me \ --to=m@bjorling.me \ --cc=axboe@fb.com \ --cc=hch@infradead.org \ --cc=keith.busch@intel.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-nvme@lists.infradead.org \ --cc=rlnelson@google.com \ --cc=sbradshaw@micron.com \ --cc=tom.leiming@gmail.com \ --cc=willy@linux.intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.