From 9d14d8d201d27a6dfb2e5b60f32914c8e06a485c Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Wed, 9 Feb 2022 21:54:06 +0000 Subject: [PATCH] nvme: optimize struct spdk_nvme_qpair packing Group fields such that those not used in the I/O path are at the end of the structure. Signed-off-by: Jim Harris Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11514 (master) (cherry picked from commit a97200ad455811ad6f36a73e2f6a860255daa6ad) Change-Id: I43eca1faacd29a5bf34be6ee644191d865cd42a9 Signed-off-by: Krzysztof Karas Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12468 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Shuhei Matsumoto --- lib/nvme/nvme_internal.h | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index 299087790..4ecfbfed6 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -455,7 +455,6 @@ struct spdk_nvme_qpair { STAILQ_HEAD(, nvme_request) free_req; STAILQ_HEAD(, nvme_request) queued_req; - STAILQ_HEAD(, nvme_request) aborting_queued_req; /* List entry for spdk_nvme_transport_poll_group::qpairs */ STAILQ_ENTRY(spdk_nvme_qpair) poll_group_stailq; @@ -465,23 +464,27 @@ struct spdk_nvme_qpair { /** Requests in this list will return error */ STAILQ_HEAD(, nvme_request) err_req_head; - /* List entry for spdk_nvme_ctrlr::active_io_qpairs */ - TAILQ_ENTRY(spdk_nvme_qpair) tailq; - - /* List entry for spdk_nvme_ctrlr_process::allocated_io_qpairs */ - TAILQ_ENTRY(spdk_nvme_qpair) per_process_tailq; - struct spdk_nvme_ctrlr_process *active_proc; struct spdk_nvme_transport_poll_group *poll_group; void *poll_group_tailq_head; - void *req_buf; - const struct spdk_nvme_transport *transport; + /* Entries below here are not touched in the main I/O path. */ + struct nvme_completion_poll_status *poll_status; + + /* List entry for spdk_nvme_ctrlr::active_io_qpairs */ + TAILQ_ENTRY(spdk_nvme_qpair) tailq; + + /* List entry for spdk_nvme_ctrlr_process::allocated_io_qpairs */ + TAILQ_ENTRY(spdk_nvme_qpair) per_process_tailq; + + STAILQ_HEAD(, nvme_request) aborting_queued_req; + + void *req_buf; }; struct spdk_nvme_poll_group {