Add support to dump rdma SRQ resource
Signed-off-by: Ran Zhou <zhouran10@h-partners.com>
This commit is contained in:
parent
44a2f93582
commit
1673447902
@ -0,0 +1,86 @@
|
|||||||
|
From 07bfa4482d49cc87a7b7c810c99397b9e8f794f6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: wenglianfa <wenglianfa@huawei.com>
|
||||||
|
Date: Tue, 10 Oct 2023 15:55:26 +0800
|
||||||
|
Subject: [PATCH] rdma: Add support to dump SRQ resource in raw format
|
||||||
|
|
||||||
|
Add support to dump SRQ resource in raw format.
|
||||||
|
|
||||||
|
This patch relies on the corresponding kernel commit aebf8145e11a
|
||||||
|
("RDMA/core: Add support to dump SRQ resource in RAW format")
|
||||||
|
|
||||||
|
Example:
|
||||||
|
$ rdma res show srq -r
|
||||||
|
dev hns3 149000...
|
||||||
|
|
||||||
|
$ rdma res show srq -j -r
|
||||||
|
[{"ifindex":0,"ifname":"hns3","data":[149,0,0,...]}]
|
||||||
|
|
||||||
|
Signed-off-by: wenglianfa <wenglianfa@huawei.com>
|
||||||
|
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
|
||||||
|
Signed-off-by: David Ahern <dsahern@kernel.org>
|
||||||
|
---
|
||||||
|
rdma/res-srq.c | 20 ++++++++++++++++++--
|
||||||
|
rdma/res.h | 2 ++
|
||||||
|
2 files changed, 20 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/rdma/res-srq.c b/rdma/res-srq.c
|
||||||
|
index 186ae281..cf9209d7 100644
|
||||||
|
--- a/rdma/res-srq.c
|
||||||
|
+++ b/rdma/res-srq.c
|
||||||
|
@@ -162,6 +162,20 @@ out:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int res_srq_line_raw(struct rd *rd, const char *name, int idx,
|
||||||
|
+ struct nlattr **nla_line)
|
||||||
|
+{
|
||||||
|
+ if (!nla_line[RDMA_NLDEV_ATTR_RES_RAW])
|
||||||
|
+ return MNL_CB_ERROR;
|
||||||
|
+
|
||||||
|
+ open_json_object(NULL);
|
||||||
|
+ print_dev(rd, idx, name);
|
||||||
|
+ print_raw_data(rd, nla_line);
|
||||||
|
+ newline(rd);
|
||||||
|
+
|
||||||
|
+ return MNL_CB_OK;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int res_srq_line(struct rd *rd, const char *name, int idx,
|
||||||
|
struct nlattr **nla_line)
|
||||||
|
{
|
||||||
|
@@ -248,7 +262,8 @@ int res_srq_idx_parse_cb(const struct nlmsghdr *nlh, void *data)
|
||||||
|
name = mnl_attr_get_str(tb[RDMA_NLDEV_ATTR_DEV_NAME]);
|
||||||
|
idx = mnl_attr_get_u32(tb[RDMA_NLDEV_ATTR_DEV_INDEX]);
|
||||||
|
|
||||||
|
- return res_srq_line(rd, name, idx, tb);
|
||||||
|
+ return (rd->show_raw) ? res_srq_line_raw(rd, name, idx, tb) :
|
||||||
|
+ res_srq_line(rd, name, idx, tb);
|
||||||
|
}
|
||||||
|
|
||||||
|
int res_srq_parse_cb(const struct nlmsghdr *nlh, void *data)
|
||||||
|
@@ -276,7 +291,8 @@ int res_srq_parse_cb(const struct nlmsghdr *nlh, void *data)
|
||||||
|
if (ret != MNL_CB_OK)
|
||||||
|
break;
|
||||||
|
|
||||||
|
- ret = res_srq_line(rd, name, idx, nla_line);
|
||||||
|
+ ret = (rd->show_raw) ? res_srq_line_raw(rd, name, idx, nla_line) :
|
||||||
|
+ res_srq_line(rd, name, idx, nla_line);
|
||||||
|
if (ret != MNL_CB_OK)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
diff --git a/rdma/res.h b/rdma/res.h
|
||||||
|
index 70e51acd..e880c28b 100644
|
||||||
|
--- a/rdma/res.h
|
||||||
|
+++ b/rdma/res.h
|
||||||
|
@@ -39,6 +39,8 @@ static inline uint32_t res_get_command(uint32_t command, struct rd *rd)
|
||||||
|
return RDMA_NLDEV_CMD_RES_CQ_GET_RAW;
|
||||||
|
case RDMA_NLDEV_CMD_RES_MR_GET:
|
||||||
|
return RDMA_NLDEV_CMD_RES_MR_GET_RAW;
|
||||||
|
+ case RDMA_NLDEV_CMD_RES_SRQ_GET:
|
||||||
|
+ return RDMA_NLDEV_CMD_RES_SRQ_GET_RAW;
|
||||||
|
default:
|
||||||
|
return command;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
@ -0,0 +1,204 @@
|
|||||||
|
From 3a882b6b4e0ee8c7cfd11176d36a98d30fc449d3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: wenglianfa <wenglianfa@huawei.com>
|
||||||
|
Date: Fri, 29 Dec 2023 14:52:41 +0800
|
||||||
|
Subject: [PATCH] rdma: Fix the error of accessing string variable outside the
|
||||||
|
lifecycle
|
||||||
|
|
||||||
|
All these SPRINT_BUF(b) definitions are inside the 'if' block, but
|
||||||
|
accessed outside the 'if' block through the pointers 'comm'. This
|
||||||
|
leads to empty 'comm' attribute when querying resource information.
|
||||||
|
So move the definitions to the beginning of the functions to extend
|
||||||
|
their life cycle.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
$ rdma res show srq
|
||||||
|
dev hns_0 srqn 0 type BASIC lqpn 18 pdn 5 pid 7775 comm
|
||||||
|
|
||||||
|
After:
|
||||||
|
$ rdma res show srq
|
||||||
|
dev hns_0 srqn 0 type BASIC lqpn 18 pdn 5 pid 7775 comm ib_send_bw
|
||||||
|
|
||||||
|
Fixes: 1808f002dfdd ("lib/fs: fix memory leak in get_task_name()")
|
||||||
|
Signed-off-by: wenglianfa <wenglianfa@huawei.com>
|
||||||
|
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
|
||||||
|
Reviewed-by: Petr Machata <petrm@nvidia.com>
|
||||||
|
Acked-by: Andrea Claudi <aclaudi@redhat.com>
|
||||||
|
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
|
||||||
|
---
|
||||||
|
rdma/res-cmid.c | 3 +--
|
||||||
|
rdma/res-cq.c | 3 +--
|
||||||
|
rdma/res-ctx.c | 3 +--
|
||||||
|
rdma/res-mr.c | 3 +--
|
||||||
|
rdma/res-pd.c | 3 +--
|
||||||
|
rdma/res-qp.c | 3 +--
|
||||||
|
rdma/res-srq.c | 3 +--
|
||||||
|
rdma/stat.c | 3 +--
|
||||||
|
8 files changed, 8 insertions(+), 16 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/rdma/res-cmid.c b/rdma/res-cmid.c
|
||||||
|
index 8b6b3497..17a89cc4 100644
|
||||||
|
--- a/rdma/res-cmid.c
|
||||||
|
+++ b/rdma/res-cmid.c
|
||||||
|
@@ -99,6 +99,7 @@ static int res_cm_id_line(struct rd *rd, const char *name, int idx,
|
||||||
|
uint32_t lqpn = 0, ps;
|
||||||
|
uint32_t cm_idn = 0;
|
||||||
|
char *comm = NULL;
|
||||||
|
+ SPRINT_BUF(b);
|
||||||
|
|
||||||
|
if (!nla_line[RDMA_NLDEV_ATTR_RES_STATE] ||
|
||||||
|
!nla_line[RDMA_NLDEV_ATTR_RES_PS])
|
||||||
|
@@ -156,8 +157,6 @@ static int res_cm_id_line(struct rd *rd, const char *name, int idx,
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
if (nla_line[RDMA_NLDEV_ATTR_RES_PID]) {
|
||||||
|
- SPRINT_BUF(b);
|
||||||
|
-
|
||||||
|
pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]);
|
||||||
|
if (!get_task_name(pid, b, sizeof(b)))
|
||||||
|
comm = b;
|
||||||
|
diff --git a/rdma/res-cq.c b/rdma/res-cq.c
|
||||||
|
index 420e935a..0cab3fe0 100644
|
||||||
|
--- a/rdma/res-cq.c
|
||||||
|
+++ b/rdma/res-cq.c
|
||||||
|
@@ -63,6 +63,7 @@ static int res_cq_line(struct rd *rd, const char *name, int idx,
|
||||||
|
uint32_t cqn = 0;
|
||||||
|
uint64_t users;
|
||||||
|
uint32_t cqe;
|
||||||
|
+ SPRINT_BUF(b);
|
||||||
|
|
||||||
|
if (!nla_line[RDMA_NLDEV_ATTR_RES_CQE] ||
|
||||||
|
!nla_line[RDMA_NLDEV_ATTR_RES_USECNT])
|
||||||
|
@@ -84,8 +85,6 @@ static int res_cq_line(struct rd *rd, const char *name, int idx,
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
if (nla_line[RDMA_NLDEV_ATTR_RES_PID]) {
|
||||||
|
- SPRINT_BUF(b);
|
||||||
|
-
|
||||||
|
pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]);
|
||||||
|
if (!get_task_name(pid, b, sizeof(b)))
|
||||||
|
comm = b;
|
||||||
|
diff --git a/rdma/res-ctx.c b/rdma/res-ctx.c
|
||||||
|
index 0a84d016..235c837a 100644
|
||||||
|
--- a/rdma/res-ctx.c
|
||||||
|
+++ b/rdma/res-ctx.c
|
||||||
|
@@ -13,13 +13,12 @@ static int res_ctx_line(struct rd *rd, const char *name, int idx,
|
||||||
|
char *comm = NULL;
|
||||||
|
uint32_t ctxn = 0;
|
||||||
|
uint32_t pid = 0;
|
||||||
|
+ SPRINT_BUF(b);
|
||||||
|
|
||||||
|
if (!nla_line[RDMA_NLDEV_ATTR_RES_CTXN])
|
||||||
|
return MNL_CB_ERROR;
|
||||||
|
|
||||||
|
if (nla_line[RDMA_NLDEV_ATTR_RES_PID]) {
|
||||||
|
- SPRINT_BUF(b);
|
||||||
|
-
|
||||||
|
pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]);
|
||||||
|
if (!get_task_name(pid, b, sizeof(b)))
|
||||||
|
comm = b;
|
||||||
|
diff --git a/rdma/res-mr.c b/rdma/res-mr.c
|
||||||
|
index 693d98c1..f6c2534a 100644
|
||||||
|
--- a/rdma/res-mr.c
|
||||||
|
+++ b/rdma/res-mr.c
|
||||||
|
@@ -31,6 +31,7 @@ static int res_mr_line(struct rd *rd, const char *name, int idx,
|
||||||
|
uint32_t pdn = 0;
|
||||||
|
uint32_t mrn = 0;
|
||||||
|
uint32_t pid = 0;
|
||||||
|
+ SPRINT_BUF(b);
|
||||||
|
|
||||||
|
if (!nla_line[RDMA_NLDEV_ATTR_RES_MRLEN])
|
||||||
|
return MNL_CB_ERROR;
|
||||||
|
@@ -48,8 +49,6 @@ static int res_mr_line(struct rd *rd, const char *name, int idx,
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
if (nla_line[RDMA_NLDEV_ATTR_RES_PID]) {
|
||||||
|
- SPRINT_BUF(b);
|
||||||
|
-
|
||||||
|
pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]);
|
||||||
|
if (!get_task_name(pid, b, sizeof(b)))
|
||||||
|
comm = b;
|
||||||
|
diff --git a/rdma/res-pd.c b/rdma/res-pd.c
|
||||||
|
index 40a3f9bd..8b9f7aa6 100644
|
||||||
|
--- a/rdma/res-pd.c
|
||||||
|
+++ b/rdma/res-pd.c
|
||||||
|
@@ -16,6 +16,7 @@ static int res_pd_line(struct rd *rd, const char *name, int idx,
|
||||||
|
uint32_t pid = 0;
|
||||||
|
uint32_t pdn = 0;
|
||||||
|
uint64_t users;
|
||||||
|
+ SPRINT_BUF(b);
|
||||||
|
|
||||||
|
if (!nla_line[RDMA_NLDEV_ATTR_RES_USECNT])
|
||||||
|
return MNL_CB_ERROR;
|
||||||
|
@@ -34,8 +35,6 @@ static int res_pd_line(struct rd *rd, const char *name, int idx,
|
||||||
|
nla_line[RDMA_NLDEV_ATTR_RES_UNSAFE_GLOBAL_RKEY]);
|
||||||
|
|
||||||
|
if (nla_line[RDMA_NLDEV_ATTR_RES_PID]) {
|
||||||
|
- SPRINT_BUF(b);
|
||||||
|
-
|
||||||
|
pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]);
|
||||||
|
if (!get_task_name(pid, b, sizeof(b)))
|
||||||
|
comm = b;
|
||||||
|
diff --git a/rdma/res-qp.c b/rdma/res-qp.c
|
||||||
|
index 145292aa..65ff54ab 100644
|
||||||
|
--- a/rdma/res-qp.c
|
||||||
|
+++ b/rdma/res-qp.c
|
||||||
|
@@ -84,6 +84,7 @@ static int res_qp_line(struct rd *rd, const char *name, int idx,
|
||||||
|
uint32_t port = 0, pid = 0;
|
||||||
|
uint32_t pdn = 0;
|
||||||
|
char *comm = NULL;
|
||||||
|
+ SPRINT_BUF(b);
|
||||||
|
|
||||||
|
if (!nla_line[RDMA_NLDEV_ATTR_RES_LQPN] ||
|
||||||
|
!nla_line[RDMA_NLDEV_ATTR_RES_SQ_PSN] ||
|
||||||
|
@@ -144,8 +145,6 @@ static int res_qp_line(struct rd *rd, const char *name, int idx,
|
||||||
|
goto out;
|
||||||
|
|
||||||
|
if (nla_line[RDMA_NLDEV_ATTR_RES_PID]) {
|
||||||
|
- SPRINT_BUF(b);
|
||||||
|
-
|
||||||
|
pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]);
|
||||||
|
if (!get_task_name(pid, b, sizeof(b)))
|
||||||
|
comm = b;
|
||||||
|
diff --git a/rdma/res-srq.c b/rdma/res-srq.c
|
||||||
|
index 1d35900a..8ab2538a 100644
|
||||||
|
--- a/rdma/res-srq.c
|
||||||
|
+++ b/rdma/res-srq.c
|
||||||
|
@@ -183,13 +183,12 @@ static int res_srq_line(struct rd *rd, const char *name, int idx,
|
||||||
|
char qp_str[MAX_QP_STR_LEN] = {};
|
||||||
|
char *comm = NULL;
|
||||||
|
uint8_t type = 0;
|
||||||
|
+ SPRINT_BUF(b);
|
||||||
|
|
||||||
|
if (!nla_line[RDMA_NLDEV_ATTR_RES_SRQN])
|
||||||
|
return MNL_CB_ERROR;
|
||||||
|
|
||||||
|
if (nla_line[RDMA_NLDEV_ATTR_RES_PID]) {
|
||||||
|
- SPRINT_BUF(b);
|
||||||
|
-
|
||||||
|
pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]);
|
||||||
|
if (!get_task_name(pid, b, sizeof(b)))
|
||||||
|
comm = b;
|
||||||
|
diff --git a/rdma/stat.c b/rdma/stat.c
|
||||||
|
index 46ed1765..bf78f7cc 100644
|
||||||
|
--- a/rdma/stat.c
|
||||||
|
+++ b/rdma/stat.c
|
||||||
|
@@ -222,6 +222,7 @@ static int res_counter_line(struct rd *rd, const char *name, int index,
|
||||||
|
struct nlattr *hwc_table, *qp_table;
|
||||||
|
struct nlattr *nla_entry;
|
||||||
|
const char *comm = NULL;
|
||||||
|
+ SPRINT_BUF(b);
|
||||||
|
bool isfirst;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
@@ -247,8 +248,6 @@ static int res_counter_line(struct rd *rd, const char *name, int index,
|
||||||
|
return MNL_CB_OK;
|
||||||
|
|
||||||
|
if (nla_line[RDMA_NLDEV_ATTR_RES_PID]) {
|
||||||
|
- SPRINT_BUF(b);
|
||||||
|
-
|
||||||
|
pid = mnl_attr_get_u32(nla_line[RDMA_NLDEV_ATTR_RES_PID]);
|
||||||
|
if (!get_task_name(pid, b, sizeof(b)))
|
||||||
|
comm = b;
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
32
backport-rdma-Update-uapi-headers.patch
Normal file
32
backport-rdma-Update-uapi-headers.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
From cd4315de422ebeb2d9844ddc71ca5a431abc2c2f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Junxian Huang <huangjunxian6@hisilicon.com>
|
||||||
|
Date: Tue, 10 Oct 2023 15:55:25 +0800
|
||||||
|
Subject: [PATCH] rdma: Update uapi headers
|
||||||
|
|
||||||
|
Update rdma_netlink.h file upto kernel commit aebf8145e11a
|
||||||
|
("RDMA/core: Add support to dump SRQ resource in RAW format")
|
||||||
|
|
||||||
|
Signed-off-by: wenglianfa <wenglianfa@huawei.com>
|
||||||
|
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
|
||||||
|
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
|
||||||
|
Signed-off-by: David Ahern <dsahern@kernel.org>
|
||||||
|
---
|
||||||
|
rdma/include/uapi/rdma/rdma_netlink.h | 2 ++
|
||||||
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/rdma/include/uapi/rdma/rdma_netlink.h b/rdma/include/uapi/rdma/rdma_netlink.h
|
||||||
|
index 92c528a0..84f775be 100644
|
||||||
|
--- a/rdma/include/uapi/rdma/rdma_netlink.h
|
||||||
|
+++ b/rdma/include/uapi/rdma/rdma_netlink.h
|
||||||
|
@@ -299,6 +299,8 @@ enum rdma_nldev_command {
|
||||||
|
|
||||||
|
RDMA_NLDEV_CMD_STAT_GET_STATUS,
|
||||||
|
|
||||||
|
+ RDMA_NLDEV_CMD_RES_SRQ_GET_RAW,
|
||||||
|
+
|
||||||
|
RDMA_NLDEV_NUM_OPS
|
||||||
|
};
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
12
iproute.spec
12
iproute.spec
@ -2,7 +2,7 @@
|
|||||||
Name: iproute
|
Name: iproute
|
||||||
Version: 6.6.0
|
Version: 6.6.0
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
Release: 1
|
Release: 2
|
||||||
Summary: Linux network configuration utilities
|
Summary: Linux network configuration utilities
|
||||||
License: GPLv2+ and Public Domain
|
License: GPLv2+ and Public Domain
|
||||||
URL: https://kernel.org/pub/linux/utils/net/iproute2/
|
URL: https://kernel.org/pub/linux/utils/net/iproute2/
|
||||||
@ -11,6 +11,10 @@ Source0: https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/iproute2-%
|
|||||||
Patch1: bugfix-iproute2-3.10.0-fix-maddr-show.patch
|
Patch1: bugfix-iproute2-3.10.0-fix-maddr-show.patch
|
||||||
Patch2: bugfix-iproute2-change-proc-to-ipnetnsproc-which-is-private.patch
|
Patch2: bugfix-iproute2-change-proc-to-ipnetnsproc-which-is-private.patch
|
||||||
|
|
||||||
|
patch6000: backport-rdma-Update-uapi-headers.patch
|
||||||
|
patch6001: backport-rdma-Add-support-to-dump-SRQ-resource-in-raw-format.patch
|
||||||
|
patch6002: backport-rdma-Fix-the-error-of-accessing-string-variable-outs.patch
|
||||||
|
|
||||||
Patch9000: feature-iproute-add-support-for-ipvlan-l2e-mode.patch
|
Patch9000: feature-iproute-add-support-for-ipvlan-l2e-mode.patch
|
||||||
Patch9001: bugfix-iproute2-cancel-some-test-cases.patch
|
Patch9001: bugfix-iproute2-cancel-some-test-cases.patch
|
||||||
|
|
||||||
@ -87,6 +91,12 @@ install -m 0644 lib/libnetlink.a %{buildroot}%{_libdir}/libnetlink.a
|
|||||||
%{_mandir}/*
|
%{_mandir}/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Feb 26 2024 Ran Zhou <zhouran10@h-partners.com> - 1:6.6.0-2
|
||||||
|
- Type:feature
|
||||||
|
- ID:NA
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:Add support to dump rdma SRQ resource in raw format
|
||||||
|
|
||||||
* Mon Feb 5 2024 liubo <liubo335@huawei.com> - 1:6.6.0-1
|
* Mon Feb 5 2024 liubo <liubo335@huawei.com> - 1:6.6.0-1
|
||||||
- Type:bugfix
|
- Type:bugfix
|
||||||
- ID:NA
|
- ID:NA
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user