From: Nilay Shroff <nilay@linux.ibm.com>
To: linux-nvme@lists.infradead.org
Cc: dwagner@suse.de, hare@kernel.org, kbusch@kernel.org, gjoyce@ibm.com
Subject: [PATCH 3/3] tree: add attribute numa_nodes for NVMe path object
Date: Sat, 5 Apr 2025 18:32:49 +0530 [thread overview]
Message-ID: <20250405130255.448345-4-nilay@linux.ibm.com> (raw)
In-Reply-To: <20250405130255.448345-1-nilay@linux.ibm.com>
Add a new attribute named "numa_nodes" under the NVMe path object. This
attribute is used by the iopolicy "numa". The numa_nodes value is stored
for each NVMe path and represents the NUMA node(s) associated with it.
When the iopolicy is set to "numa", I/O traffic originating from a given
NUMA node will be forwarded through the corresponding NVMe path.
The numa_nodes attribute is useful for observing which NVMe path the
kernel would choose for I/O forwarding based on NUMA affinity. To support
this, export the attribute in libnvme.map so it can be accessed via
nvme-cli.
Signed-off-by: Nilay Shroff <nilay@linux.ibm.com>
---
src/libnvme.map | 1 +
src/nvme/private.h | 1 +
src/nvme/tree.c | 10 ++++++++++
src/nvme/tree.h | 8 ++++++++
4 files changed, 20 insertions(+)
diff --git a/src/libnvme.map b/src/libnvme.map
index e53fad6b..ffadc647 100644
--- a/src/libnvme.map
+++ b/src/libnvme.map
@@ -317,6 +317,7 @@ LIBNVME_1_0 {
nvme_path_get_ctrl;
nvme_path_get_name;
nvme_path_get_ns;
+ nvme_path_get_numa_nodes;
nvme_path_get_queue_depth;
nvme_path_get_sysfs_dir;
nvme_paths_filter;
diff --git a/src/nvme/private.h b/src/nvme/private.h
index f94276e2..5bfa027b 100644
--- a/src/nvme/private.h
+++ b/src/nvme/private.h
@@ -33,6 +33,7 @@ struct nvme_path {
char *name;
char *sysfs_dir;
char *ana_state;
+ char *numa_nodes;
int grpid;
int queue_depth;
};
diff --git a/src/nvme/tree.c b/src/nvme/tree.c
index b7a38a07..ddb6fd70 100644
--- a/src/nvme/tree.c
+++ b/src/nvme/tree.c
@@ -913,6 +913,11 @@ const char *nvme_path_get_ana_state(nvme_path_t p)
return p->ana_state;
}
+const char *nvme_path_get_numa_nodes(nvme_path_t p)
+{
+ return p->numa_nodes;
+}
+
void nvme_free_path(struct nvme_path *p)
{
list_del_init(&p->entry);
@@ -920,6 +925,7 @@ void nvme_free_path(struct nvme_path *p)
free(p->name);
free(p->sysfs_dir);
free(p->ana_state);
+ free(p->numa_nodes);
free(p);
}
@@ -955,6 +961,10 @@ static int nvme_ctrl_scan_path(nvme_root_t r, struct nvme_ctrl *c, char *name)
if (!p->ana_state)
p->ana_state = strdup("optimized");
+ p->numa_nodes = nvme_get_path_attr(p, "numa_nodes");
+ if (!p->numa_nodes)
+ p->numa_nodes = strdup("-1");
+
grpid = nvme_get_path_attr(p, "ana_grpid");
if (grpid) {
sscanf(grpid, "%d", &p->grpid);
diff --git a/src/nvme/tree.h b/src/nvme/tree.h
index a9082f8e..f6116c2b 100644
--- a/src/nvme/tree.h
+++ b/src/nvme/tree.h
@@ -867,6 +867,14 @@ const char *nvme_path_get_sysfs_dir(nvme_path_t p);
*/
const char *nvme_path_get_ana_state(nvme_path_t p);
+/**
+ * nvme_path_get_numa_nodes() - NUMA nodes of an nvme_path_t object
+ * @p : &nvme_path_t object
+ *
+ * Return: NUMA nodes associated to @p
+ */
+const char *nvme_path_get_numa_nodes(nvme_path_t p);
+
/**
* nvme_path_get_queue_depth() - Queue depth of an nvme_path_t object
* @p: &nvme_path_t object
--
2.49.0
next prev parent reply other threads:[~2025-04-05 13:03 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-05 13:02 [PATCH 0/3] libnvme: add support for discovering multipath of a shared ns Nilay Shroff
2025-04-05 13:02 ` [PATCH 1/3] tree: add support for discovering nvme paths using sysfs multipath link Nilay Shroff
2025-04-07 7:19 ` Daniel Wagner
2025-04-07 9:36 ` Nilay Shroff
2025-04-07 11:01 ` Daniel Wagner
2025-04-07 13:43 ` Nilay Shroff
2025-04-05 13:02 ` [PATCH 2/3] tree: add queue-depth attribute for nvme path object Nilay Shroff
2025-04-07 7:40 ` Daniel Wagner
2025-04-05 13:02 ` Nilay Shroff [this message]
2025-04-07 7:44 ` [PATCH 3/3] tree: add attribute numa_nodes for NVMe " Daniel Wagner
2025-04-07 9:59 ` Nilay Shroff
2025-04-07 11:10 ` Daniel Wagner
2025-04-07 14:19 ` Nilay Shroff
2025-04-07 15:19 ` Daniel Wagner
2025-04-08 5:58 ` Hannes Reinecke
2025-04-08 11:42 ` Daniel Wagner
2025-04-08 11:48 ` Hannes Reinecke
2025-04-09 9:38 ` Nilay Shroff
2025-04-09 11:36 ` Daniel Wagner
2025-04-05 16:15 ` [PATCH 0/3] libnvme: add support for discovering multipath of a shared ns Nilay Shroff
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=20250405130255.448345-4-nilay@linux.ibm.com \
--to=nilay@linux.ibm.com \
--cc=dwagner@suse.de \
--cc=gjoyce@ibm.com \
--cc=hare@kernel.org \
--cc=kbusch@kernel.org \
--cc=linux-nvme@lists.infradead.org \
/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: link
Be 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.