Improved Node Descriptions
Subsystems (2)
v2 cover Improved Node Descriptions
The common practice in IB fabrics is to set the description of an HCA to be the hostname of the machine plus a description (i.e., "myhost hca-1", "myhost hca-2", etc..)
This has a limitation, however. The first is that if the machine's hostname is set via DHCP, the HCA description may be set before the hostname is, leading to an incorrect description. This can also occur if the machine's hostname changes for some other reason after boot.
This can cause difficulties and confusion when trying to maintain a large fabric - if all your nodes are described as "localhost HCA-1" it can be very 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 a '%h' it will be replaced at read time with the hostname of the node. If the provided source string contains a '%d' it will be replaced at read time with the name of the HCA. For example, the first Mellanox HCA on a node called "homer" would have the default description:
homer: mthca0 MT25208 InfiniHostEx Mellanox Technologies
While the default description for the second QLogic HCA on node-a13 would be:
node-a2: qib0 QLogic kernel.org driver
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 a '%' character.
Changes from Version 1:
Replaced the original substitution of the hostname for '@' with an implementation of the '%h' and '%d' fields, and changed the default node description for Mellanox and QLogic HCA types to default to "%h: %d <description>" where '<description>' is the old default message.
---
Michael Heinz (2):
Function for improved node descriptions Add support for ib_build_node_desc() to the HCAs.
drivers/infiniband/core/mad.c | 33 ++++++++++++++++++++++++++ drivers/infiniband/hw/ipath/ipath_mad.c | 2 +- drivers/infiniband/hw/ipath/ipath_verbs.c | 4 ++- drivers/infiniband/hw/mlx4/mad.c | 2 +- drivers/infiniband/hw/mlx4/main.c | 3 ++ drivers/infiniband/hw/mthca/mthca_mad.c | 2 +- drivers/infiniband/hw/mthca/mthca_provider.c | 3 ++ drivers/infiniband/hw/qib/qib_mad.c | 2 +- drivers/infiniband/hw/qib/qib_verbs.c | 2 +- include/rdma/ib_mad.h | 9 +++++++ 10 files changed, 53 insertions(+), 9 deletions(-)
Signature · 5 lines
Signed-off-by: Michael Heinz <[email protected]> -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v2 1/2 Function for improved node descriptions
The common practice in IB fabrics is to set the description of an HCA to be the hostname of the machine plus a description (i.e., "myhost hca-1", "myhost hca-2", etc..)
This has a limitation, however. The first is that if the machine's hostname is set via DHCP, the HCA description may be set before the hostname is, leading to an incorrect description. This can also occur if the machine's hostname changes for some other reason after boot.
This can cause difficulties and confusion when trying to maintain a large fabric - if all your nodes are described as "localhost HCA-1" it can be very 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 a '%h' it will be replaced at read time with the hostname of the node. If the provided source string contains a '%d' it will be replaced at read time with the name of the HCA. For example, if the node description of the second HCA on node-a13 is set to'%h: %d', at read time this will be expanded to read "node-a2: qib1".
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 a '%' character.
Changes from Version 1:
Replaced the original substitution of the hostname for '@' with an implementation of the '%h' and '%d' fields, and changed the default node description for qib and ipath HCA types to default to "%h: %d <description>".
--- drivers/infiniband/core/mad.c | 33 +++++++++++++++++++++++++++++++++ include/rdma/ib_mad.h | 9 +++++++++ 2 files changed, 42 insertions(+), 0 deletions(-)
drivers/infiniband/core/mad.c +33 -0
@@ -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,38 @@ 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,struct ib_device *dev) +{ +char *dest = smp->data; +char *end = dest +IB_SMP_DATA_SIZE ; +char *src = dev->node_desc; +char *field; + +while (*src && (dest < end)) { +if (*src !='%' ) { + *dest++ = *src++; + }else { + src++; +switch (*src) { +case 'h' : + field =init_utsname ()->nodename; + src++; +for (; *field && (*field !='.' ) && + (dest < end);) + *dest++ = *field++; +break ; +case 'd' : + field = dev->name; + src++; +for (; *field && (dest < end);) + *dest++ = *field++; +break ; + } + } + } +} +EXPORT_SYMBOL (ib_build_node_desc); +int ib_is_mad_class_rmpp (u8 mgmt_class) { if ((mgmt_class == IB_MGMT_CLASS_SUBN_ADM) ||
include/rdma/ib_mad.h +9 -0
@@ -40,6 +40,7 @@#include <linux/list.h> #include <rdma/ib_verbs.h> +#include <rdma/ib_smi.h> /* 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,struct ib_device *dev); + +/** * 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
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCH v2 1/2] Function for improved node descriptions
VWdoLg0KDQpJIHJlYWxpemVkIGFmdGVyIEkgc2VudCB0aGlzIHRoYXQgSSBmb3Jnb3QgdG8gZ28g YmFjayBhbmQgYWRkIHRoZSBkZWZhdWx0IGNhc2UgdG8gdGhlIHBhcnNpbmcgZnVuY3Rpb24uIFdl bGwsIGxldCdzIHRhbGsgYWJvdXQgdGhpcyB2ZXJzaW9uIGFuZCBmaWd1cmUgb3V0IGlmIGFueXRo aW5nIGVsc2UgbmVlZHMgdG8gY2hhbmdlLg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K RnJvbTogTWljaGFlbCBIZWlueiBbbWFpbHRvOm1pY2hhZWwuaGVpbnpAcWxvZ2ljLmNvbV0NClNl bnQ6IFdlZG5lc2RheSwgRmVicnVhcnkgMjMsIDIwMTEgOToyNSBQTQ0KVG86IHJvbGFuZEBrZXJu ZWwub3JnOyBsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZzsgTWlrZSBIZWlueg0KQ2M6IFRvZGQg UmltbWVyDQpTdWJqZWN0OiBbUEFUQ0ggdjIgMS8yXSBGdW5jdGlvbiBmb3IgaW1wcm92ZWQgbm9k ZSBkZXNjcmlwdGlvbnMNCg0KVGhlIGNvbW1vbiBwcmFjdGljZSBpbiBJQiBmYWJyaWNzIGlzIHRv IHNldCB0aGUgZGVzY3JpcHRpb24gb2YgYW4gSENBIHRvIGJlIHRoZSBob3N0bmFtZSBvZiB0aGUg bWFjaGluZSBwbHVzIGEgZGVzY3JpcHRpb24gKGkuZS4sICJteWhvc3QgaGNhLTEiLCAibXlob3N0 IGhjYS0yIiwgZXRjLi4pDQoNClRoaXMgaGFzIGEgbGltaXRhdGlvbiwgaG93ZXZlci4gIFRoZSBm aXJzdCBpcyB0aGF0IGlmIHRoZSBtYWNoaW5lJ3MgaG9zdG5hbWUgaXMgc2V0IHZpYSBESENQLCB0 aGUgSENBIGRlc2NyaXB0aW9uIG1heSBiZSBzZXQgYmVmb3JlIHRoZSBob3N0bmFtZSBpcywgbGVh ZGluZyB0byBhbiBpbmNvcnJlY3QgZGVzY3JpcHRpb24uIFRoaXMgY2FuIGFsc28gb2NjdXIgaWYg dGhlIG1hY2hpbmUncyBob3N0bmFtZSBjaGFuZ2VzIGZvciBzb21lIG90aGVyIHJlYXNvbiBhZnRl ciBib290Lg0KDQpUaGlzIGNhbiBjYXVzZSBkaWZmaWN1bHRpZXMgYW5kIGNvbmZ1c2lvbiB3aGVu IHRyeWluZyB0byBtYWludGFpbiBhIGxhcmdlIGZhYnJpYyAtIGlmIGFsbCB5b3VyIG5vZGVzIGFy ZSBkZXNjcmliZWQgYXMgImxvY2FsaG9zdCBIQ0EtMSIgaXQgY2FuIGJlIHZlcnkgZGlmZmljdWx0 IHRvIGZpZ3VyZSBvdXQgd2hpY2ggbm9kZSBpcyBzdWZmZXJpbmcgZnJvbSBzeW1ib2wgZXJyb3Jz Lg0KDQpUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGUgcHJvYmxlbSBieSBwcm92aWRpbmcgYSBmdW5j dGlvbiB0byBidWlsZCB0aGUgbm9kZSBkZXNjcmlwdGlvbi4gSWYgdGhlIHByb3ZpZGVkIHNvdXJj ZSBzdHJpbmcgZm9yIHRoZSBkZXNjcmlwdGlvbiBjb250YWlucyBhICclaCcgaXQgd2lsbCBiZSBy ZXBsYWNlZCBhdCByZWFkIHRpbWUgd2l0aCB0aGUgaG9zdG5hbWUgb2YgdGhlIG5vZGUuIElmIHRo ZSBwcm92aWRlZCBzb3VyY2Ugc3RyaW5nIGNvbnRhaW5zIGEgJyVkJyBpdCB3aWxsIGJlIHJlcGxh Y2VkIGF0IHJlYWQgdGltZSB3aXRoIHRoZSBuYW1lIG9mIHRoZSBIQ0EuICBGb3IgZXhhbXBsZSwg aWYgdGhlIG5vZGUgZGVzY3JpcHRpb24gb2YgdGhlIHNlY29uZCBIQ0Egb24gbm9kZS1hMTMgaXMg c2V0IHRvJyVoOiAlZCcsIGF0IHJlYWQgdGltZSB0aGlzIHdpbGwgYmUgZXhwYW5kZWQgdG8gcmVh ZCAibm9kZS1hMjogcWliMSIuDQoNClRoaXMgZW5zdXJlcyB0aGF0IGV2ZW4gYWZ0ZXIgYSBmYWJy aWMgaGFzIGJlZW4gY29tcGxldGVseSBpbml0aWFsaXplZCwgaWYgYSBub2RlJ3MgaG9zdG5hbWUg Y2hhbmdlcywgdGhhdCBjaGFuZ2Ugd2lsbCBiZSByZWZsZWN0ZWQgaW4gdGhlIG5leHQgc3dlZXAg b2YgdGhlIFNNLCBidXQgYWxzbyBtYWludGFpbnMgY29tcGF0aWJpbGl0eSB3aXRoIGV4aXN0aW5n IGNvZGUgc2luY2UgdGhlIGJlaGF2aW9yIGlzIHVuY2hhbmdlZCBpZiB0aGUgZGVzY3JpcHRpb24g c3RyaW5nIGRvZXMgbm90IGNvbnRhaW4gYSAnJScgY2hhcmFjdGVyLg0KDQpDaGFuZ2VzIGZyb20g VmVyc2lvbiAxOg0KDQpSZXBsYWNlZCB0aGUgb3JpZ2luYWwgc3Vic3RpdHV0aW9uIG9mIHRoZSBo b3N0bmFtZSBmb3IgJ0AnIHdpdGggYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlICclaCcgYW5kICcl ZCcgZmllbGRzLCBhbmQgY2hhbmdlZCB0aGUgZGVmYXVsdCBub2RlIGRlc2NyaXB0aW9uIGZvciBx aWIgYW5kIGlwYXRoIEhDQSB0eXBlcyB0byBkZWZhdWx0IHRvICIlaDogJWQgPGRlc2NyaXB0aW9u PiIuDQoNClNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgSGVpbnogPG1pY2hhZWwuaGVpbnpAcWxvZ2lj LmNvbT4NCg0KLS0tDQogZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvbWFkLmMgfCAgIDMzICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KIGluY2x1ZGUvcmRtYS9pYl9tYWQuaCAgICAg ICAgIHwgICAgOSArKysrKysrKysNCiAyIGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyks IDAgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9t YWQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL21hZC5jDQppbmRleCA4MjJjZmRjLi5kNTQ2 OGUxIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvbWFkLmMNCisrKyBiL2Ry aXZlcnMvaW5maW5pYmFuZC9jb3JlL21hZC5jDQpAQCAtNDEsNiArNDEsNyBAQA0KICNpbmNsdWRl ICJtYWRfcm1wcC5oIg0KICNpbmNsdWRlICJzbWkuaCINCiAjaW5jbHVkZSAiYWdlbnQuaCINCisj aW5jbHVkZSAibGludXgvdXRzbmFtZS5oIg0KDQogTU9EVUxFX0xJQ0VOU0UoIkR1YWwgQlNEL0dQ TCIpOw0KIE1PRFVMRV9ERVNDUklQVElPTigia2VybmVsIElCIE1BRCBBUEkiKTsNCkBAIC05MzIs NiArOTMzLDM4IEBAIGludCBpYl9nZXRfbWFkX2RhdGFfb2Zmc2V0KHU4IG1nbXRfY2xhc3MpDQog fQ0KIEVYUE9SVF9TWU1CT0woaWJfZ2V0X21hZF9kYXRhX29mZnNldCk7DQoNCit2b2lkIGliX2J1 aWxkX25vZGVfZGVzYyhzdHJ1Y3QgaWJfc21wICpzbXAsIHN0cnVjdCBpYl9kZXZpY2UgKmRldikN Cit7DQorICAgICAgIGNoYXIgKmRlc3QgPSBzbXAtPmRhdGE7DQorICAgICAgIGNoYXIgKmVuZCA9 IGRlc3QgKyBJQl9TTVBfREFUQV9TSVpFOw0KKyAgICAgICBjaGFyICpzcmMgPSBkZXYtPm5vZGVf ZGVzYzsNCisgICAgICAgY2hhciAqZmllbGQ7DQorDQorICAgICAgIHdoaWxlICgqc3JjICYmIChk ZXN0IDwgZW5kKSkgew0KKyAgICAgICAgICAgICAgIGlmICgqc3JjICE9ICclJykgew0KKyAgICAg ICAgICAgICAgICAgICAgICAgKmRlc3QrKyA9ICpzcmMrKzsNCisgICAgICAgICAgICAgICB9IGVs c2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgc3JjKys7DQorICAgICAgICAgICAgICAgICAg ICAgICBzd2l0Y2ggKCpzcmMpIHsNCisgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2gnOg0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IGluaXRfdXRzbmFtZSgpLT5u b2RlbmFtZTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjKys7DQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyAqZmllbGQgJiYgKCpmaWVsZCAhPSAnLicp ICYmDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlc3QgPCBlbmQp OykNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZGVzdCsrID0gKmZp ZWxkKys7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAg ICAgICAgICAgICAgICAgY2FzZSAnZCc6DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZpZWxkID0gZGV2LT5uYW1lOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMr KzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICg7ICpmaWVsZCAmJiAoZGVz dCA8IGVuZCk7KQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkZXN0 KysgPSAqZmllbGQrKzsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQor ICAgICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgfQ0KKyAgICAgICB9DQor fQ0KK0VYUE9SVF9TWU1CT0woaWJfYnVpbGRfbm9kZV9kZXNjKTsNCisNCiBpbnQgaWJfaXNfbWFk X2NsYXNzX3JtcHAodTggbWdtdF9jbGFzcykNCiB7DQogICAgICAgIGlmICgobWdtdF9jbGFzcyA9 PSBJQl9NR01UX0NMQVNTX1NVQk5fQURNKSB8fA0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvcmRtYS9p Yl9tYWQuaCBiL2luY2x1ZGUvcmRtYS9pYl9tYWQuaA0KaW5kZXggZDNiOTQwMS4uNDE3YTM3MSAx MDA2NDQNCi0tLSBhL2luY2x1ZGUvcmRtYS9pYl9tYWQuaA0KKysrIGIvaW5jbHVkZS9yZG1hL2li X21hZC5oDQpAQCAtNDAsNiArNDAsNyBAQA0KICNpbmNsdWRlIDxsaW51eC9saXN0Lmg+DQoNCiAj aW5jbHVkZSA8cmRtYS9pYl92ZXJicy5oPg0KKyNpbmNsdWRlIDxyZG1hL2liX3NtaS5oPg0KDQog LyogTWFuYWdlbWVudCBiYXNlIHZlcnNpb24gKi8NCiAjZGVmaW5lIElCX01HTVRfQkFTRV9WRVJT SU9OICAgICAgICAgICAgICAgICAgIDENCkBAIC02MzcsNiArNjM4LDE0IEBAIGludCBpYl9pc19t YWRfY2xhc3Nfcm1wcCh1OCBtZ210X2NsYXNzKTsNCiBpbnQgaWJfZ2V0X21hZF9kYXRhX29mZnNl dCh1OCBtZ210X2NsYXNzKTsNCg0KIC8qKg0KKyAqIGliX2J1aWxkX25vZGVfZGVzYyAtIGNvcGll cyB0aGUgbm9kZSBkZXNjcmlwdGlvbiBhbmQgcmVwbGFjZXMNCisgKiBhbnkgQCBtYXJrZXJzIHdp dGggdGhlIHByZXNlbnQgc3lzdGVtIG5vZGUgbmFtZS4NCisgKiBAZGVzdDogZGVzdGluYXRpb24N CisgKiBAc3JjOiBzb3VyY2UNCisgKi8NCit2b2lkIGliX2J1aWxkX25vZGVfZGVzYyhzdHJ1Y3Qg aWJfc21wICpzbXAsIHN0cnVjdCBpYl9kZXZpY2UgKmRldik7DQorDQorLyoqDQogICogaWJfZ2V0 X3JtcHBfc2VnbWVudCAtIHJldHVybnMgdGhlIGRhdGEgYnVmZmVyIGZvciBhIGdpdmVuIFJNUFAg c2VnbWVudC4NCiAgKiBAc2VuZF9idWY6IFByZXZpb3VzbHkgYWxsb2NhdGVkIHNlbmQgZGF0YSBi dWZmZXIuDQogICogQHNlZ19udW06IG51bWJlciBvZiBzZWdtZW50IHRvIHJldHVybg0KDQoNClRo aXMgbWVzc2FnZSBhbmQgYW55IGF0dGFjaGVkIGRvY3VtZW50cyBjb250YWluIGluZm9ybWF0aW9u IGZyb20gUUxvZ2ljIENvcnBvcmF0aW9uIG9yIGl0cyB3aG9sbHktb3duZWQgc3Vic2lkaWFyaWVz IHRoYXQgbWF5IGJlIGNvbmZpZGVudGlhbC4gSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJl Y2lwaWVudCwgeW91IG1heSBub3QgcmVhZCwgY29weSwgZGlzdHJpYnV0ZSwgb3IgdXNlIHRoaXMg aW5mb3JtYXRpb24uIElmIHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgdHJhbnNtaXNzaW9uIGluIGVy cm9yLCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYnkgcmVwbHkgZS1tYWls IGFuZCB0aGVuIGRlbGV0ZSB0aGlzIG1lc3NhZ2UuDQo=
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH v2 2/2 Add support for ib_build_node_desc() to the HCAs.
In reply to Michael HeinzAdds support for ib_build_node_desc() to the QLogic and Mellanox HCAs.
Changes from Version 1:
Changed the default node description for Mellanox and QLogic HCAs to read "%h: %d <description>" where '<description>' is the old default value.
--- drivers/infiniband/hw/ipath/ipath_mad.c | 2 +- drivers/infiniband/hw/ipath/ipath_verbs.c | 4 ++-- drivers/infiniband/hw/mlx4/mad.c | 2 +- drivers/infiniband/hw/mlx4/main.c | 3 ++- drivers/infiniband/hw/mthca/mthca_mad.c | 2 +- drivers/infiniband/hw/mthca/mthca_provider.c | 3 ++- drivers/infiniband/hw/qib/qib_mad.c | 2 +- drivers/infiniband/hw/qib/qib_verbs.c | 2 +- 8 files changed, 11 insertions(+), 9 deletions(-)
drivers/infiniband/hw/ipath/ipath_mad.c +1 -1
@@ -60,7 +60,7 @@ static int recv_subn_get_nodedescription(struct ib_smp *smp,if (smp->attr_mod) smp->status |=IB_SMP_INVALID_FIELD ; -memcpy (smp->data, ibdev->node_desc,sizeof (smp->data)); +ib_build_node_desc (smp, ibdev);return reply (smp); }
drivers/infiniband/hw/ipath/ipath_verbs.c +2 -2
@@ -2179,8 +2179,8 @@ int ipath_register_ib_device(struct ipath_devdata *dd) dev->mmap = ipath_mmap; dev->dma_ops = &ipath_dma_mapping_ops; -snprintf (dev->node_desc,sizeof (dev->node_desc), -IPATH_IDSTR " %s" ,init_utsname ()->nodename); +strncpy (dev->node_desc,sizeof (dev->node_desc), +"%h: %d " IPATH_IDSTR ); ret =ib_register_device (dev,NULL );if (ret)
drivers/infiniband/hw/mlx4/mad.c +1 -1
@@ -196,7 +196,7 @@ static void node_desc_override(struct ib_device *dev, mad->mad_hdr.method == IB_MGMT_METHOD_GET_RESP && mad->mad_hdr.attr_id == IB_SMP_ATTR_NODE_DESC) {spin_lock (&to_mdev (dev)->sm_lock); -memcpy (((struct ib_smp *) mad)->data, dev->node_desc,64 ); +ib_build_node_desc ((struct ib_smp *) mad, dev);spin_unlock (&to_mdev (dev)->sm_lock); } }
drivers/infiniband/hw/mlx4/main.c +2 -1
@@ -713,7 +713,8 @@ static int init_node_data(struct mlx4_ib_dev *dev)if (err) goto out; -memcpy (dev->ib_dev.node_desc, out_mad->data,64 ); +snprintf (dev->ib_dev.node_desc,64 ,"%%h: %%d %s" , out_mad->data); + dev->ib_dev.node_desc[63 ] =0 ; in_mad->attr_id =IB_SMP_ATTR_NODE_INFO ;
drivers/infiniband/hw/mthca/mthca_mad.c +1 -1
@@ -153,7 +153,7 @@ static void node_desc_override(struct ib_device *dev, mad->mad_hdr.method == IB_MGMT_METHOD_GET_RESP && mad->mad_hdr.attr_id == IB_SMP_ATTR_NODE_DESC) {mutex_lock (&to_mdev (dev)->cap_mask_mutex); -memcpy (((struct ib_smp *) mad)->data, dev->node_desc,64 ); +ib_build_node_desc ((struct ib_smp *) mad, dev);mutex_unlock (&to_mdev (dev)->cap_mask_mutex); } }
drivers/infiniband/hw/mthca/mthca_provider.c +2 -1
@@ -1273,7 +1273,8 @@ static int mthca_init_node_data(struct mthca_dev *dev) goto out; } -memcpy (dev->ib_dev.node_desc, out_mad->data,64 ); +snprintf (dev->ib_dev.node_desc,64 ,"%%h: %%d %s" , out_mad->data); + dev->ib_dev.node_desc[63 ] =0 ; in_mad->attr_id =IB_SMP_ATTR_NODE_INFO ;
drivers/infiniband/hw/qib/qib_mad.c +1 -1
@@ -260,7 +260,7 @@ static int subn_get_nodedescription(struct ib_smp *smp,if (smp->attr_mod) smp->status |=IB_SMP_INVALID_FIELD ; -memcpy (smp->data, ibdev->node_desc,sizeof (smp->data)); +ib_build_node_desc (smp, ibdev);return reply (smp); }
drivers/infiniband/hw/qib/qib_verbs.c +1 -1
@@ -2158,7 +2158,7 @@ int qib_register_ib_device(struct qib_devdata *dd) ibdev->dma_ops = &qib_dma_mapping_ops;snprintf (ibdev->node_desc,sizeof (ibdev->node_desc), -QIB_IDSTR " %s" ,init_utsname ()->nodename); +"%h: %d " QIB_IDSTR ); ret =ib_register_device (ibdev, qib_create_port_files);if (ret)
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 22 lines · Michael Heinz
The common practice in IB fabrics is to set the description of an HCA to be the hostname of the machine plus a description (i.e., "myhost hca-1", "myhost hca-2", etc..)
This has a limitation, however. The first is that if the machine's hostname is set via DHCP, the HCA description may be set before the hostname is, leading to an incorrect description. This can also occur if the machine's hostname changes for some other reason after boot.
This can cause difficulties and confusion when trying to maintain a large fabric - if all your nodes are described as "localhost HCA-1" it can be very 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 a '%h' it will be replaced at read time with the hostname of the node. If the provided source string contains a '%d' it will be replaced at read time with the name of the HCA. For example, the first Mellanox HCA on a node called "homer" would have the default description:
homer: mthca0 MT25208 InfiniHostEx Mellanox Technologies
Quoted 7 lines
While the default description for the second QLogic HCA on node-a13 would be:
node-a2: qib0 QLogic kernel.org driver
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,
assuming the SM sweep reads the NodeDescription, right ?
-- Hal
Quoted 27 lines
but also maintains compatibility with existing code since the behavior is unchanged if the description string does not contain a '%' character.
Changes from Version 1:
Replaced the original substitution of the hostname for '@' with an implementation of the '%h' and '%d' fields, and changed the default node description for Mellanox and QLogic HCA types to default to "%h: %d <description>" where '<description>' is the old default message.
---
Michael Heinz (2):
Function for improved node descriptions Add support forib_build_node_desc()to the HCAs.drivers/infiniband/core/mad.c | 33 ++++++++++++++++++++++++++
drivers/infiniband/hw/ipath/ipath_mad.c| 2 +-drivers/infiniband/hw/ipath/ipath_verbs.c| 4 ++-drivers/infiniband/hw/mlx4/mad.c| 2 +-drivers/infiniband/hw/mlx4/main.c| 3 ++drivers/infiniband/hw/mthca/mthca_mad.c| 2 +-drivers/infiniband/hw/mthca/mthca_provider.c| 3 ++drivers/infiniband/hw/qib/qib_mad.c| 2 +-drivers/infiniband/hw/qib/qib_verbs.c| 2 +-include/rdma/ib_mad.h| 9 +++++++
Quoted 9 lines
10 files changed, 53 insertions(+), 9 deletions(-)--
Signed-off-by Michael Heinz <[email protected]>--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): AANLkTi=c1A_RWR3S8c0g2iH2L84F7UCo9ojWcO2NjDLn-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org
WWVzLCBIYWwgLSBJIGFjY2VwdCB0aGF0LCBidXQgdGhpcyBzdGlsbCBoYXMgdmFsdWUgLSBlc3Bl Y2lhbGx5IHNpbmNlIG5vdCBhbGwgdGhlIEhDQSBkcml2ZXJzIHN1cHBvcnQgdGhlIHRyYXAuIElm IHdlIGNhbiBmaWd1cmUgb3V0IGEgd2F5IGZvciB0aGUgcmRtYSBzdGFjayB0byBhY2NlcHRhYmx5 IGRldGVjdCB3aGVuIHRoZSBob3N0bmFtZSBjaGFuZ2VzLCB0aGVuIHdlIGNhbiBhbHNvIHRyaWdn ZXIgdGhlIHRyYXAgd2hlbiB0aGF0IGhhcHBlbnMgLSBidXQgdGhlIGNvZGUgaXMgaW5kZXBlbmRl bnQgb2YgdGhpcy4NCg0KPiBhc3N1bWluZyB0aGUgU00gc3dlZXAgcmVhZHMgdGhlIE5vZGVEZXNj cmlwdGlvbiwgcmlnaHQgPw0KPg0KPiAtLSBIYWwNCg0KDQpUaGlzIG1lc3NhZ2UgYW5kIGFueSBh dHRhY2hlZCBkb2N1bWVudHMgY29udGFpbiBpbmZvcm1hdGlvbiBmcm9tIFFMb2dpYyBDb3Jwb3Jh dGlvbiBvciBpdHMgd2hvbGx5LW93bmVkIHN1YnNpZGlhcmllcyB0aGF0IG1heSBiZSBjb25maWRl bnRpYWwuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHlvdSBtYXkgbm90 IHJlYWQsIGNvcHksIGRpc3RyaWJ1dGUsIG9yIHVzZSB0aGlzIGluZm9ybWF0aW9uLiBJZiB5b3Ug aGF2ZSByZWNlaXZlZCB0aGlzIHRyYW5zbWlzc2lvbiBpbiBlcnJvciwgcGxlYXNlIG5vdGlmeSB0 aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGJ5IHJlcGx5IGUtbWFpbCBhbmQgdGhlbiBkZWxldGUgdGhp cyBtZXNzYWdlLg0K
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html