nvme: refactor ns->ctrl by request
authorMinwoo Im <minwoo.im.dev@gmail.com>
Wed, 13 Jan 2021 14:36:27 +0000 (23:36 +0900)
committerChristoph Hellwig <hch@lst.de>
Tue, 2 Feb 2021 09:26:11 +0000 (10:26 +0100)
Just for current code in nvme_cleanup_cmd(), we don't have to get
namespace instance, but we need controller instance.

Controller instance can be retrieved by namespace instance, but it can
be directly accessed by nvme_request instance from request.

ctrl = nvme_req(req)->ctrl;

We don't have to go around namespace instance from request instance
through gendisk.

Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/core.c

index 636a88c..009830d 100644 (file)
@@ -841,11 +841,11 @@ static inline blk_status_t nvme_setup_rw(struct nvme_ns *ns,
 void nvme_cleanup_cmd(struct request *req)
 {
        if (req->rq_flags & RQF_SPECIAL_PAYLOAD) {
-               struct nvme_ns *ns = req->rq_disk->private_data;
+               struct nvme_ctrl *ctrl = nvme_req(req)->ctrl;
                struct page *page = req->special_vec.bv_page;
 
-               if (page == ns->ctrl->discard_page)
-                       clear_bit_unlock(0, &ns->ctrl->discard_page_busy);
+               if (page == ctrl->discard_page)
+                       clear_bit_unlock(0, &ctrl->discard_page_busy);
                else
                        kfree(page_address(page) + req->special_vec.bv_offset);
        }