From: phil Date: Wed, 7 Sep 2005 05:45:05 +0000 (+0000) Subject: b=8320 X-Git-Tag: v1_7_100~1^103~4^2~260^2~119 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=822aa326820f1e7682bca0dd29a9aec07fcc3bce;p=fs%2Flustre-release.git b=8320 r=phil (HP's patch) Severity : minor Frequency : rare Bugzilla : 8320 Description: lconf incorrectly determined whether two IP networks could talk Details : In some more complicated routing and multiple-network configurations, lconf will avoid trying to make a network connection to a disjoint part of the IP space. It was doing the math incorrectly for one set of cases. --- diff --git a/lustre/ChangeLog b/lustre/ChangeLog index e788cd4..f3270d4 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -19,6 +19,17 @@ Details : The filter_direct_io()+filter_commitrw_write() journal commits for to avoid filesystem fragmentation during allocation. BKL lock removed for 2.6 xattr operations where it is no longer needed. +Severity : minor +Frequency : rare +Bugzilla : 8320 +Description: lconf incorrectly determined whether two IP networks could talk +Details : In some more complicated routing and multiple-network + configurations, lconf will avoid trying to make a network + connection to a disjoint part of the IP space. It was doing the + math incorrectly for one set of cases. + +------------------------------------------------------------------------------ + 08-26-2005 Cluster File Systems, Inc. * version 1.4.5 * bug fixes @@ -117,6 +128,8 @@ Details : If lookup is in progress on a file that is unlinked we might try complete and ll_file_open() enqueues the open again but it_open_error() was not checking DISP_OPEN_OPEN errors correctly. +------------------------------------------------------------------------------ + 2005-08-08 Cluster File Systems, Inc. * version 1.4.4 * bug fixes diff --git a/lustre/utils/lconf b/lustre/utils/lconf index 66628bf..da888a8 100755 --- a/lustre/utils/lconf +++ b/lustre/utils/lconf @@ -1468,7 +1468,11 @@ class Network(Module): except: return 0 - if addr1 & mask1 == addr2 & mask2: + # If the masks are not identical we need to know if the 2 interfaces + # can talk to each other, so the most restrictive will tell us that + mask = max(mask1, mask2) + if addr1 & mask == addr2 & mask: + debug("Net1: %s Net2: %s Match: %s to %s" % (net1, net2, addr1 & mask, addr2 & mask)) return 1 return 0