* [PATCH v3 0/2] kref and passthrough cleanup [not found] <CGME20210427064849epcas5p424de8d9686fc422ecb80540d57d040f1@epcas5p4.samsung.com> @ 2021-04-27 6:47 ` Kanchan Joshi [not found] ` <CGME20210427064854epcas5p3fe76f88cc1e2b86f1f1ec69101fb04ab@epcas5p3.samsung.com> ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: Kanchan Joshi @ 2021-04-27 6:47 UTC (permalink / raw) To: hch, kbusch, chaitanya.kulkarni, sagi; +Cc: linux-nvme, Kanchan Joshi first patch is to avoid opencoding ns->kref, while second one to remove double memset in passthough io path. since v2: - [patch 2] applied Chaitanya's feedback - [patch 1] collected "reviewed-by" since v1: - [patch 2] move clearing-cmd part to nvme_setup_cmd (Christoph's feedback) Kanchan Joshi (2): nvme: add nvme_get_ns helper nvme: avoid memset for passthrough requests drivers/nvme/host/core.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) -- 2.25.1 _______________________________________________ Linux-nvme mailing list Linux-nvme@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-nvme ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <CGME20210427064854epcas5p3fe76f88cc1e2b86f1f1ec69101fb04ab@epcas5p3.samsung.com>]
* [PATCH v3 1/2] nvme: add nvme_get_ns helper [not found] ` <CGME20210427064854epcas5p3fe76f88cc1e2b86f1f1ec69101fb04ab@epcas5p3.samsung.com> @ 2021-04-27 6:47 ` Kanchan Joshi 0 siblings, 0 replies; 4+ messages in thread From: Kanchan Joshi @ 2021-04-27 6:47 UTC (permalink / raw) To: hch, kbusch, chaitanya.kulkarni, sagi; +Cc: linux-nvme, Kanchan Joshi Add a helper to avoid opencoding ns->kref increment. Decrement is already done via nvme_put_ns helper. Signed-off-by: Kanchan Joshi <joshi.k@samsung.com> Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> --- drivers/nvme/host/core.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index 2f45e8fcdd7c..f6d7c397f2ee 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -576,6 +576,11 @@ static void nvme_free_ns(struct kref *kref) kfree(ns); } +static inline bool nvme_get_ns(struct nvme_ns *ns) +{ + return kref_get_unless_zero(&ns->kref); +} + void nvme_put_ns(struct nvme_ns *ns) { kref_put(&ns->kref, nvme_free_ns); @@ -1504,7 +1509,7 @@ static int nvme_ns_open(struct nvme_ns *ns) /* should never be called due to GENHD_FL_HIDDEN */ if (WARN_ON_ONCE(nvme_ns_head_multipath(ns->head))) goto fail; - if (!kref_get_unless_zero(&ns->kref)) + if (!nvme_get_ns(ns)) goto fail; if (!try_module_get(ns->ctrl->ops->module)) goto fail_put_ns; @@ -3613,7 +3618,7 @@ struct nvme_ns *nvme_find_get_ns(struct nvme_ctrl *ctrl, unsigned nsid) down_read(&ctrl->namespaces_rwsem); list_for_each_entry(ns, &ctrl->namespaces, list) { if (ns->head->ns_id == nsid) { - if (!kref_get_unless_zero(&ns->kref)) + if (!nvme_get_ns(ns)) continue; ret = ns; break; -- 2.25.1 _______________________________________________ Linux-nvme mailing list Linux-nvme@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-nvme ^ permalink raw reply related [flat|nested] 4+ messages in thread
[parent not found: <CGME20210427064858epcas5p316a9a67eee1e49fe0d21351aee8a9704@epcas5p3.samsung.com>]
* [PATCH v3 2/2] nvme: avoid memset for passthrough requests [not found] ` <CGME20210427064858epcas5p316a9a67eee1e49fe0d21351aee8a9704@epcas5p3.samsung.com> @ 2021-04-27 6:47 ` Kanchan Joshi 0 siblings, 0 replies; 4+ messages in thread From: Kanchan Joshi @ 2021-04-27 6:47 UTC (permalink / raw) To: hch, kbusch, chaitanya.kulkarni, sagi; +Cc: linux-nvme, Kanchan Joshi nvme_clear_nvme_request() clears the nvme_command, which is unncessary for passthrough requests as nvme_command is overwritten immediately. Move clearing part from this helper to the caller, so that double memset for passthrough requests is avoided. Signed-off-by: Kanchan Joshi <joshi.k@samsung.com> --- drivers/nvme/host/core.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index f6d7c397f2ee..9ac28fcafbac 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -589,9 +589,6 @@ EXPORT_SYMBOL_NS_GPL(nvme_put_ns, NVME_TARGET_PASSTHRU); static inline void nvme_clear_nvme_request(struct request *req) { - struct nvme_command *cmd = nvme_req(req)->cmd; - - memset(cmd, 0, sizeof(*cmd)); nvme_req(req)->retries = 0; nvme_req(req)->flags = 0; req->rq_flags |= RQF_DONTPREP; @@ -903,8 +900,10 @@ blk_status_t nvme_setup_cmd(struct nvme_ns *ns, struct request *req) struct nvme_command *cmd = nvme_req(req)->cmd; blk_status_t ret = BLK_STS_OK; - if (!(req->rq_flags & RQF_DONTPREP)) + if (!(req->rq_flags & RQF_DONTPREP)) { nvme_clear_nvme_request(req); + memset(cmd, 0, sizeof(*cmd)); + } switch (req_op(req)) { case REQ_OP_DRV_IN: -- 2.25.1 _______________________________________________ Linux-nvme mailing list Linux-nvme@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-nvme ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v3 0/2] kref and passthrough cleanup 2021-04-27 6:47 ` [PATCH v3 0/2] kref and passthrough cleanup Kanchan Joshi [not found] ` <CGME20210427064854epcas5p3fe76f88cc1e2b86f1f1ec69101fb04ab@epcas5p3.samsung.com> [not found] ` <CGME20210427064858epcas5p316a9a67eee1e49fe0d21351aee8a9704@epcas5p3.samsung.com> @ 2021-04-28 6:45 ` Christoph Hellwig 2 siblings, 0 replies; 4+ messages in thread From: Christoph Hellwig @ 2021-04-28 6:45 UTC (permalink / raw) To: Kanchan Joshi; +Cc: hch, kbusch, chaitanya.kulkarni, sagi, linux-nvme Thanks, applied to nvme-5.13. _______________________________________________ Linux-nvme mailing list Linux-nvme@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-nvme ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-04-28 6:46 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CGME20210427064849epcas5p424de8d9686fc422ecb80540d57d040f1@epcas5p4.samsung.com>
2021-04-27 6:47 ` [PATCH v3 0/2] kref and passthrough cleanup Kanchan Joshi
[not found] ` <CGME20210427064854epcas5p3fe76f88cc1e2b86f1f1ec69101fb04ab@epcas5p3.samsung.com>
2021-04-27 6:47 ` [PATCH v3 1/2] nvme: add nvme_get_ns helper Kanchan Joshi
[not found] ` <CGME20210427064858epcas5p316a9a67eee1e49fe0d21351aee8a9704@epcas5p3.samsung.com>
2021-04-27 6:47 ` [PATCH v3 2/2] nvme: avoid memset for passthrough requests Kanchan Joshi
2021-04-28 6:45 ` [PATCH v3 0/2] kref and passthrough cleanup Christoph Hellwig
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).