Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package smc-tools for openSUSE:Factory checked in at 2024-12-18 20:10:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/smc-tools (Old) and /work/SRC/openSUSE:Factory/.smc-tools.new.29675 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "smc-tools" Wed Dec 18 20:10:48 2024 rev:16 rq:1231870 version:1.8.4 Changes: -------- --- /work/SRC/openSUSE:Factory/smc-tools/smc-tools.changes 2023-09-13 20:48:10.309794643 +0200 +++ /work/SRC/openSUSE:Factory/.smc-tools.new.29675/smc-tools.changes 2024-12-18 20:11:55.405758997 +0100 @@ -1,0 +2,12 @@ +Wed Dec 18 11:43:06 UTC 2024 - Nikolay Gueorguiev <[email protected]> + +- Upgrade smc-tools to v1.8.4 (jsc#PED-3280, jsc#PED-3227) + * Changes: + - smcd/smcr statistics: add statistics on sndbufs/RMBs usage + * Bug fixes: + - smc_rnics: Fix smc_rnics showing the wrong physical port + - util.h: Fix build with CFLAGS="-g" + - smc_run: Fix segfault issue during creating concurrent sockets + - Makefile: Make sure to show the right release number + +------------------------------------------------------------------- Old: ---- smc-tools-1.8.3.tar.gz New: ---- smc-tools-1.8.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ smc-tools.spec ++++++ --- /var/tmp/diff_new_pack.zT9a0m/_old 2024-12-18 20:11:55.853777673 +0100 +++ /var/tmp/diff_new_pack.zT9a0m/_new 2024-12-18 20:11:55.857777839 +0100 @@ -1,7 +1,7 @@ # # spec file for package smc-tools # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: smc-tools -Version: 1.8.3 +Version: 1.8.4 Release: 0 Summary: Shared Memory Communication via RDMA License: EPL-1.0 ++++++ smc-tools-1.8.3.tar.gz -> smc-tools-1.8.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/Makefile new/smc-tools-1.8.4/Makefile --- old/smc-tools-1.8.3/Makefile 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/Makefile 2024-12-18 11:27:51.000000000 +0100 @@ -9,7 +9,7 @@ # http://www.eclipse.org/legal/epl-v10.html # -SMC_TOOLS_RELEASE = 1.8.3 +SMC_TOOLS_RELEASE = 1.8.4 VER_MAJOR = $(shell echo $(SMC_TOOLS_RELEASE) | cut -d '.' -f 1) ARCHTYPE = $(shell uname -m) @@ -106,13 +106,13 @@ endif -%d.o: %.c +%d.o: %.c smctools_common.h ${CCC} ${ALL_CFLAGS} -DSMCD -c $< -o $@ -%r.o: %.c +%r.o: %.c smctools_common.h ${CCC} ${ALL_CFLAGS} -DSMCR -c $< -o $@ -%.o: %.c +%.o: %.c smctools_common.h ${CCC} ${ALL_CFLAGS} -c $< -o $@ smc: smc.o info.o ueid.o seid.o dev.o linkgroup.o libnetlink.o util.o diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/README.md new/smc-tools-1.8.4/README.md --- old/smc-tools-1.8.3/README.md 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/README.md 2024-12-18 11:27:51.000000000 +0100 @@ -39,6 +39,17 @@ Release History: ================ +* __v1.8.4 (2024-12-17)__ + + Changes: + - `smcd`/`smcr` statistics: add statistics on sndbufs/RMBs usage + + Bug fixes: + - `smc_rnics`: Fix smc_rnics showing the wrong physical port + - `util.h`: Fix build with CFLAGS="-g" + - `smc_run`: Fix segfault issue during creating concurrent sockets + - `Makefile`: Make sure to show the right release number + * __v1.8.3 (2023-07-28)__ Bug fixes: @@ -57,7 +68,7 @@ * __v1.8.1 (2022-04-14)__ Changes: - - `smc_rncs`: Recognize RoCE Express3 cards + - `smc_rnics`: Recognize RoCE Express3 cards * __v1.8.0 (2022-04-11)__ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/libnetlink.c new/smc-tools-1.8.4/libnetlink.c --- old/smc-tools-1.8.3/libnetlink.c 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/libnetlink.c 2024-12-18 11:27:51.000000000 +0100 @@ -302,3 +302,10 @@ sk = NULL; } } + +uint64_t nl_attr_get_uint(const struct nlattr *nla) +{ + if (nla && nla_len(nla) == sizeof(uint32_t)) + return nla_get_u32(nla); + return nla_get_u64(nla); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/libnetlink.h new/smc-tools-1.8.4/libnetlink.h --- old/smc-tools-1.8.3/libnetlink.h 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/libnetlink.h 2024-12-18 11:27:51.000000000 +0100 @@ -65,4 +65,5 @@ int gen_nl_handle(int cmd, int nlmsg_flags, int (*cb_handler)(struct nl_msg *msg, void *arg), void *arg); int gen_nl_handle_dump(int cmd, int (*cb_handler)(struct nl_msg *msg, void *arg), void *arg); +uint64_t nl_attr_get_uint(const struct nlattr *nla); #endif /* SMC_LIBNETLINK_H_ */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/linkgroup.c new/smc-tools-1.8.4/linkgroup.c --- old/smc-tools-1.8.3/linkgroup.c 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/linkgroup.c 2024-12-18 11:27:51.000000000 +0100 @@ -319,6 +319,10 @@ if (lgr_attrs[SMC_NLA_LGR_R_PNETID]) snprintf((char*)lgr->pnet_id, sizeof(lgr->pnet_id), "%s", nla_get_string(lgr_attrs[SMC_NLA_LGR_R_PNETID])); + if (lgr_attrs[SMC_NLA_LGR_R_SNDBUF_ALLOC]) + lgr->sndbuf_alloc = nl_attr_get_uint(lgr_attrs[SMC_NLA_LGR_R_SNDBUF_ALLOC]); + if (lgr_attrs[SMC_NLA_LGR_R_RMB_ALLOC]) + lgr->rmb_alloc = nl_attr_get_uint(lgr_attrs[SMC_NLA_LGR_R_RMB_ALLOC]); if (lgr_attrs[SMC_NLA_LGR_R_V2_COMMON]) { struct nlattr *v2_lgr_attrs[SMC_NLA_LGR_V2_MAX + 1]; @@ -365,6 +369,10 @@ if (lgr_attrs[SMC_NLA_LGR_D_PNETID]) snprintf((char*)lgr->pnet_id, sizeof(lgr->pnet_id), "%s", nla_get_string(lgr_attrs[SMC_NLA_LGR_D_PNETID])); + if (lgr_attrs[SMC_NLA_LGR_D_SNDBUF_ALLOC]) + lgr->sndbuf_alloc = nl_attr_get_uint(lgr_attrs[SMC_NLA_LGR_D_SNDBUF_ALLOC]); + if (lgr_attrs[SMC_NLA_LGR_D_DMB_ALLOC]) + lgr->dmb_alloc = nl_attr_get_uint(lgr_attrs[SMC_NLA_LGR_D_DMB_ALLOC]); if (lgr_attrs[SMC_NLA_LGR_D_V2_COMMON]) { struct nlattr *v2_lgr_attrs[SMC_NLA_LGR_V2_MAX + 1]; @@ -402,6 +410,8 @@ printf("EID : %s\n", lgr->v2_lgr_info.negotiated_eid); } printf("#Conns : %d\n", lgr->conns_num); + printf("Sndbuf : %lld B\n", lgr->sndbuf_alloc); + printf("RMB : %lld B\n", lgr->rmb_alloc); } static int show_lgr_smcr_info(struct nlattr **attr) @@ -482,6 +492,8 @@ printf("EID : %s\n", lgr->v2_lgr_info.negotiated_eid); } printf("#Conns : %d\n", lgr->conns_num); + printf("Sndbuf : %lld B\n", lgr->sndbuf_alloc); + printf("DMB : %lld B\n", lgr->dmb_alloc); } static int show_lgr_smcd_info(struct nlattr **attr) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/smc-preload.c new/smc-tools-1.8.4/smc-preload.c --- old/smc-tools-1.8.3/smc-preload.c 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/smc-preload.c 2024-12-18 11:27:51.000000000 +0100 @@ -22,6 +22,7 @@ #include <errno.h> #include <search.h> #include <ctype.h> +#include <pthread.h> #define DLOPEN_FLAG RTLD_LAZY @@ -34,8 +35,9 @@ #define SMCPROTO_SMC6 1 /* SMC protocol, IPv6 */ #endif -int (*orig_socket)(int domain, int type, int protocol); +int (*orig_socket)(int domain, int type, int protocol) = NULL; static void *dl_handle = NULL; +static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; static void initialize(void); @@ -97,7 +99,7 @@ { int rc; - if (!dl_handle) + if (!orig_socket) initialize(); /* check if socket is eligible for AF_SMC */ @@ -135,10 +137,17 @@ static void initialize(void) { + pthread_mutex_lock(&mutex); + if (orig_socket) { + pthread_mutex_unlock(&mutex); + return; + } + set_debug_mode("SMC_DEBUG"); dl_handle = dlopen(LIBC_SO, DLOPEN_FLAG); if (!dl_handle) dbg_msg(stderr, "dlopen failed: %s\n", dlerror()); GET_FUNC(socket); + pthread_mutex_unlock(&mutex); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/smc_chk new/smc-tools-1.8.4/smc_chk --- old/smc-tools-1.8.3/smc_chk 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/smc_chk 2024-12-18 11:27:51.000000000 +0100 @@ -2,7 +2,7 @@ # Copyright IBM Corp. 2021 -VERSION="1.8.3"; +VERSION="1.8.4"; function usage() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/smc_dbg new/smc-tools-1.8.4/smc_dbg --- old/smc-tools-1.8.3/smc_dbg 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/smc_dbg 2024-12-18 11:27:51.000000000 +0100 @@ -2,7 +2,7 @@ # Copyright IBM Corp. 2019 -VERSION="1.8.3"; +VERSION="1.8.4"; function usage() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/smc_rnics new/smc-tools-1.8.4/smc_rnics --- old/smc-tools-1.8.3/smc_rnics 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/smc_rnics 2024-12-18 11:27:51.000000000 +0100 @@ -2,7 +2,7 @@ # Copyright IBM Corp. 2018, 2022 -VERSION="1.8.3"; +VERSION="1.8.4"; function usage() { @@ -86,10 +86,14 @@ dev_type="$1"; if [ -e port ]; then port=`cat port`; - if [ $IBdev -eq 0 ]; then - let port=$port-1; + if [ $port -eq 0 ]; then + port="n/a"; else - port=1; + if [ $IBdev -eq 0 ]; then + let port=$port-1; + else + port=1; + fi fi fi; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/smc_run new/smc-tools-1.8.4/smc_run --- old/smc-tools-1.8.3/smc_run 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/smc_run 2024-12-18 11:27:51.000000000 +0100 @@ -10,7 +10,7 @@ # http://www.eclipse.org/legal/epl-v10.html # LIB_NAME="libsmc-preload.so" -VERSION="1.8.3"; +VERSION="1.8.4"; function usage() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/smctools_common.h new/smc-tools-1.8.4/smctools_common.h --- old/smc-tools-1.8.3/smctools_common.h 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/smctools_common.h 2024-12-18 11:27:51.000000000 +0100 @@ -19,7 +19,7 @@ #define STRINGIFY_1(x) #x #define STRINGIFY(x) STRINGIFY_1(x) -#define RELEASE_STRING "1.8.3" +#define RELEASE_STRING "1.8.4" #define PF_SMC 43 @@ -140,6 +140,11 @@ SMC_NLA_LGR_R_CONNS_NUM, /* u32 */ SMC_NLA_LGR_R_V2_COMMON, /* nest */ SMC_NLA_LGR_R_V2, /* nest */ + SMC_NLA_LGR_R_NET_COOKIE, /* u64 */ + SMC_NLA_LGR_R_PAD, /* flag */ + SMC_NLA_LGR_R_BUF_TYPE, /* u8 */ + SMC_NLA_LGR_R_SNDBUF_ALLOC, /* uint */ + SMC_NLA_LGR_R_RMB_ALLOC, /* uint */ __SMC_NLA_LGR_R_MAX, SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1 }; @@ -173,6 +178,10 @@ SMC_NLA_LGR_D_CHID, /* u16 */ SMC_NLA_LGR_D_PAD, /* flag */ SMC_NLA_LGR_D_V2_COMMON, /* nest */ + SMC_NLA_LGR_D_EXT_GID, /* u64 */ + SMC_NLA_LGR_D_PEER_EXT_GID, /* u64 */ + SMC_NLA_LGR_D_SNDBUF_ALLOC, /* uint */ + SMC_NLA_LGR_D_DMB_ALLOC, /* uint */ __SMC_NLA_LGR_D_MAX, SMC_NLA_LGR_D_MAX = __SMC_NLA_LGR_D_MAX - 1 }; @@ -260,6 +269,8 @@ SMC_NLA_STATS_T_TX_BYTES, /* u64 */ SMC_NLA_STATS_T_RX_CNT, /* u64 */ SMC_NLA_STATS_T_TX_CNT, /* u64 */ + SMC_NLA_STATS_T_RX_RMB_USAGE, /* uint */ + SMC_NLA_STATS_T_TX_RMB_USAGE, /* uint */ __SMC_NLA_STATS_T_MAX, SMC_NLA_STATS_T_MAX = __SMC_NLA_STATS_T_MAX - 1 }; @@ -497,6 +508,8 @@ __u32 conns_num; __u16 chid; __u8 vlan_id; + __u64 sndbuf_alloc; + __u64 dmb_alloc; struct smc_v2_lgr_info v2_lgr_info; }; @@ -525,6 +538,8 @@ __u8 pnet_id[SMC_MAX_PNETID_LEN]; __u8 vlan_id; __u32 conns_num; + __u64 sndbuf_alloc; + __u64 rmb_alloc; struct smc_v2_lgr_info v2_lgr_info; }; #endif /* SMCTOOLS_COMMON_H */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/stats.c new/smc-tools-1.8.4/stats.c --- old/smc-tools-1.8.3/stats.c 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/stats.c 2024-12-18 11:27:51.000000000 +0100 @@ -47,7 +47,7 @@ FILE *cache_fp = NULL; char *cache_file_path = NULL; -static char* j_output[63] = {"SMC_INT_TX_BUF_8K", "SMC_INT_TX_BUF_16K", "SMC_INT_TX_BUF_32K", "SMC_INT_TX_BUF_64K", "SMC_INT_TX_BUF_128K", +static char* j_output[65] = {"SMC_INT_TX_BUF_8K", "SMC_INT_TX_BUF_16K", "SMC_INT_TX_BUF_32K", "SMC_INT_TX_BUF_64K", "SMC_INT_TX_BUF_128K", "SMC_INT_TX_BUF_256K", "SMC_INT_TX_BUF_512K", "SMC_INT_TX_BUF_1024K", "SMC_INT_TX_BUF_G_1024K", "SMC_INT_RX_BUF_8K", "SMC_INT_RX_BUF_16K", "SMC_INT_RX_BUF_32K", "SMC_INT_RX_BUF_64K", "SMC_INT_RX_BUF_128K", "SMC_INT_RX_BUF_256K", "SMC_INT_RX_BUF_512K", "SMC_INT_RX_BUF_1024K", "SMC_INT_RX_BUF_G_1024K", @@ -61,7 +61,7 @@ "SMC_INT_RX_BUF_FULL_CNT", "SMC_INT_RX_BUF_REUSE_CNT", "SMC_INT_RX_BUF_ALLOC_CNT", "SMC_INT_RX_BUF_DGRADE_CNT", "SMC_CLNT_V1_SUCC_CNT", "SMC_CLNT_V2_SUCC_CNT", "SMC_SRV_V1_SUCC_CNT", "SMC_SRV_V2_SUCC_CNT", "SMC_SENDPAGE_CNT", "SMC_URG_DATA_CNT", "SMC_SPLICE_CNT", "SMC_CORK_CNT", "SMC_NDLY_CNT", - "SMC_RX_BYTES", "SMC_TX_BYTES", "SMC_RX_CNT", "SMC_TX_CNT" + "SMC_RX_BYTES", "SMC_TX_BYTES", "SMC_RX_CNT", "SMC_TX_CNT", "SMC_RX_RMB_USAGE", "SMC_TX_RMB_USAGE" }; static struct nla_policy smc_gen_stats_policy[SMC_NLA_STATS_MAX + 1] = { @@ -399,6 +399,8 @@ printf(" Data transmitted (Bytes) %14llu (%s)\n", smc_stat.smc[tech_type].rx_bytes, temp_str); printf(" Total requests %12llu\n", tech->rx_cnt); + get_abbreviated(smc_stat.smc[tech_type].rx_rmbuse, 6, temp_str); + printf(" Buffer usage (Bytes) %12llu (%s)\n", tech->rx_rmbuse, temp_str); printf(" Buffer full %12llu (%.2f%%)\n", tech->rmb_rx.buf_full_cnt, buf_rx_full); if (d_level) { @@ -420,6 +422,8 @@ printf(" Data transmitted (Bytes) %14llu (%s)\n", smc_stat.smc[tech_type].tx_bytes, temp_str); printf(" Total requests %12llu\n", tech->tx_cnt); + get_abbreviated(smc_stat.smc[tech_type].tx_rmbuse, 6, temp_str); + printf(" Buffer usage (Bytes) %12llu (%s)\n", tech->tx_rmbuse, temp_str); printf(" Buffer full %12llu (%.2f%%)\n", tech->rmb_tx.buf_full_cnt, buf_full); printf(" Buffer full (remote) %12llu (%.2f%%)\n", tech->rmb_tx.buf_full_peer_cnt, @@ -622,6 +626,14 @@ trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_TX_BYTES]); smc_stat.smc[tech_type].tx_bytes = trgt; } + if (tech_attrs[SMC_NLA_STATS_T_RX_RMB_USAGE]) { + trgt = nl_attr_get_uint(tech_attrs[SMC_NLA_STATS_T_RX_RMB_USAGE]); + smc_stat.smc[tech_type].rx_rmbuse = trgt; + } + if (tech_attrs[SMC_NLA_STATS_T_TX_RMB_USAGE]) { + trgt = nl_attr_get_uint(tech_attrs[SMC_NLA_STATS_T_TX_RMB_USAGE]); + smc_stat.smc[tech_type].tx_rmbuse = trgt; + } if (tech_attrs[SMC_NLA_STATS_T_RX_CNT]) { trgt = nla_get_u64(tech_attrs[SMC_NLA_STATS_T_RX_CNT]); smc_stat.smc[tech_type].rx_cnt = trgt; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/stats.h new/smc-tools-1.8.4/stats.h --- old/smc-tools-1.8.3/stats.h 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/stats.h 2024-12-18 11:27:51.000000000 +0100 @@ -113,6 +113,8 @@ __u64 tx_bytes; __u64 rx_cnt; __u64 tx_cnt; + __u64 rx_rmbuse; + __u64 tx_rmbuse; }; struct smc_stats { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/smc-tools-1.8.3/util.h new/smc-tools-1.8.4/util.h --- old/smc-tools-1.8.3/util.h 2023-07-28 13:40:47.000000000 +0200 +++ new/smc-tools-1.8.4/util.h 2024-12-18 11:27:51.000000000 +0100 @@ -33,7 +33,7 @@ int get_abbreviated(uint64_t num, int max_digs, char *res); int contains(const char *prfx, const char *str); -inline int is_str_empty(char *str) +static inline int is_str_empty(char *str) { if (str && str[0] == '\0') return 1;
