From patchwork Tue Aug 11 12:20:15 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Simmons X-Patchwork-Id: 11709193 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2B76A14E3 for ; Tue, 11 Aug 2020 12:21:20 +0000 (UTC) Received: from pdx1-mailman02.dreamhost.com (pdx1-mailman02.dreamhost.com [64.90.62.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 13BBA2075D for ; Tue, 11 Aug 2020 12:21:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 13BBA2075D Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lustre-devel-bounces@lists.lustre.org Received: from pdx1-mailman02.dreamhost.com (localhost [IPv6:::1]) by pdx1-mailman02.dreamhost.com (Postfix) with ESMTP id 4B3B12F3885; Tue, 11 Aug 2020 05:20:51 -0700 (PDT) X-Original-To: lustre-devel@lists.lustre.org Delivered-To: lustre-devel-lustre.org@pdx1-mailman02.dreamhost.com Received: from smtp4.ccs.ornl.gov (smtp4.ccs.ornl.gov [160.91.203.40]) by pdx1-mailman02.dreamhost.com (Postfix) with ESMTP id 7E1842F82F8 for ; Tue, 11 Aug 2020 05:20:28 -0700 (PDT) Received: from star.ccs.ornl.gov (star.ccs.ornl.gov [160.91.202.134]) by smtp4.ccs.ornl.gov (Postfix) with ESMTP id 24B401005646; Tue, 11 Aug 2020 08:20:21 -0400 (EDT) Received: by star.ccs.ornl.gov (Postfix, from userid 2004) id 2248D2B6; Tue, 11 Aug 2020 08:20:21 -0400 (EDT) From: James Simmons To: Andreas Dilger , Oleg Drokin , NeilBrown Date: Tue, 11 Aug 2020 08:20:15 -0400 Message-Id: <1597148419-20629-20-git-send-email-jsimmons@infradead.org> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1597148419-20629-1-git-send-email-jsimmons@infradead.org> References: <1597148419-20629-1-git-send-email-jsimmons@infradead.org> Subject: [lustre-devel] [PATCH 19/23] lnet: Allow duplicate nets in ip2nets syntax X-BeenThere: lustre-devel@lists.lustre.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "For discussing Lustre software development." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Chris Horn , Lustre Development List MIME-Version: 1.0 Errors-To: lustre-devel-bounces@lists.lustre.org Sender: "lustre-devel" From: Chris Horn Before the MR feature was implemented, it was not possible to configure multiple interfaces on the same LNet, so the ip2nets syntax did not allow for this. Now that we have MR feature, we should allow it to be configured via ip2nets syntax. e.g. o2ib(ib0) 10.10.10.1 o2ib(ib1) 10.10.10.2 A test is added for configuring LNet with kernel ip2nets parameter. setup_netns() refactored to facilitate the new test. cleanup_lnet() is modified to check whether lnet module is loaded before attempting lnetctl lnet unconfigured otherwise sanity-lnet.sh could exit with rc 234 on cleanup. HPE-bug-id: LUS-9046 WC-bug-id: https://jira.whamcloud.com/browse/LU-13734 Lustre-commit: 6203ed821ffac ("LU-13734 lnet: Allow duplicate nets in ip2nets syntax") Signed-off-by: Chris Horn Reviewed-on: https://review.whamcloud.com/39227 Reviewed-by: James Simmons Reviewed-by: Neil Brown Reviewed-by: Oleg Drokin Signed-off-by: James Simmons --- net/lnet/lnet/config.c | 36 ++++-------------------------------- 1 file changed, 4 insertions(+), 32 deletions(-) diff --git a/net/lnet/lnet/config.c b/net/lnet/lnet/config.c index 9f36c82..6ddd9d6 100644 --- a/net/lnet/lnet/config.c +++ b/net/lnet/lnet/config.c @@ -349,10 +349,10 @@ struct lnet_net * { struct lnet_net *net; - if (!lnet_net_unique(net_id, net_list, NULL)) { - CERROR("Duplicate net %s. Ignore\n", - libcfs_net2str(net_id)); - return NULL; + if (!lnet_net_unique(net_id, net_list, &net)) { + CDEBUG(D_NET, "Returning duplicate net %p %s\n", net, + libcfs_net2str(net->net_id)); + return net; } net = kzalloc(sizeof(*net), GFP_NOFS); @@ -1450,12 +1450,8 @@ struct lnet_ni * struct list_head *t; struct list_head *t2; struct lnet_text_buf *tb; - struct lnet_text_buf *tb2; - u32 net1; - u32 net2; int len; int count; - int dup; int rc; if (lnet_str2tbs_sep(&raw_entries, ip2nets) < 0) { @@ -1494,30 +1490,6 @@ struct lnet_ni * if (rc < 0) break; - dup = 0; - list_for_each_entry(tb, ¤t_nets, ltb_list) { - net1 = lnet_netspec2net(tb->ltb_text); - LASSERT(net1 != LNET_NIDNET(LNET_NID_ANY)); - - list_for_each_entry(tb2, &matched_nets, ltb_list) { - net2 = lnet_netspec2net(tb2->ltb_text); - LASSERT(net2 != LNET_NIDNET(LNET_NID_ANY)); - - if (net1 == net2) { - dup = 1; - break; - } - } - - if (dup) - break; - } - - if (dup) { - lnet_free_text_bufs(¤t_nets); - continue; - } - list_for_each_safe(t, t2, ¤t_nets) { tb = list_entry(t, struct lnet_text_buf, ltb_list);