From patchwork Fri Feb 18 21:29:13 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Heinz X-Patchwork-Id: 574071 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p1ILTHkb014324 for ; Fri, 18 Feb 2011 21:29:17 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753021Ab1BRV3R (ORCPT ); Fri, 18 Feb 2011 16:29:17 -0500 Received: from [198.186.4.11] ([198.186.4.11]:45481 "EHLO homer.dev.silverstorm.com" rhost-flags-FAIL-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1752971Ab1BRV3Q (ORCPT ); Fri, 18 Feb 2011 16:29:16 -0500 Received: from [172.21.1.208] (homer [127.0.0.1]) by homer.dev.silverstorm.com (8.13.8/8.13.8) with ESMTP id p1ILTDFA021412; Fri, 18 Feb 2011 16:29:14 -0500 Subject: [PATCH 1/2] Function for improved node descriptions To: roland@kernel.org, linux-rdma@vger.kernel.org, michael.heinz@qlogic.com From: Michael Heinz Date: Fri, 18 Feb 2011 16:29:13 -0500 Message-ID: <20110218212913.21364.23411.stgit@homer> In-Reply-To: <20110218212723.21364.92709.stgit@homer> References: <20110218212723.21364.92709.stgit@homer> User-Agent: StGit/0.15 MIME-Version: 1.0 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Fri, 18 Feb 2011 21:29:17 +0000 (UTC) difficult to figure out which node is suffering from symbol errors. This patch addresses the problem by providing a function to build the node description. If the provided source string for the description contains an '@' character, the function will substitute the current utsname. This ensures that even after a fabric has been completely initialized, if a node's hostname changes, that change will be reflected in the next sweep of the SM, but also maintains compatibility with existing code since the behavior is unchanged if the description string does not contain an '@' character. Signed-off-by: Michael Heinz --- drivers/infiniband/core/mad.c | 19 +++++++++++++++++++ include/rdma/ib_mad.h | 9 +++++++++ 2 files changed, 28 insertions(+), 0 deletions(-) diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c index 822cfdc..7ea8556 100644 --- a/drivers/infiniband/core/mad.c +++ b/drivers/infiniband/core/mad.c @@ -41,6 +41,7 @@ #include "mad_rmpp.h" #include "smi.h" #include "agent.h" +#include "linux/utsname.h" MODULE_LICENSE("Dual BSD/GPL"); MODULE_DESCRIPTION("kernel IB MAD API"); @@ -932,6 +933,24 @@ int ib_get_mad_data_offset(u8 mgmt_class) } EXPORT_SYMBOL(ib_get_mad_data_offset); +void ib_build_node_desc(struct ib_smp *smp, char *src) +{ + char *dest = smp->data; + int i; + for (i = 0; i < IB_SMP_DATA_SIZE;) { + if (*src == '@') { + char *name = init_utsname()->nodename; + for (; *name && (*name != '.') && (i < IB_SMP_DATA_SIZE); ++i) + *dest++ = *name++; + src++; + } else { + *dest++ = *src++; + i++; + } + } +} +EXPORT_SYMBOL(ib_build_node_desc); + int ib_is_mad_class_rmpp(u8 mgmt_class) { if ((mgmt_class == IB_MGMT_CLASS_SUBN_ADM) || diff --git a/include/rdma/ib_mad.h b/include/rdma/ib_mad.h index d3b9401..e2ed2db 100644 --- a/include/rdma/ib_mad.h +++ b/include/rdma/ib_mad.h @@ -40,6 +40,7 @@ #include #include +#include /* Management base version */ #define IB_MGMT_BASE_VERSION 1 @@ -637,6 +638,14 @@ int ib_is_mad_class_rmpp(u8 mgmt_class); int ib_get_mad_data_offset(u8 mgmt_class); /** + * ib_build_node_desc - copies the node description and replaces + * any @ markers with the present system node name. + * @dest: destination + * @src: source + */ +void ib_build_node_desc(struct ib_smp *smp, char *src); + +/** * ib_get_rmpp_segment - returns the data buffer for a given RMPP segment. * @send_buf: Previously allocated send data buffer. * @seg_num: number of segment to return