<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:49:10 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Whamcloud Community JIRA</title>
    <link>https://jira.whamcloud.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.4.14</version>
        <build-number>940014</build-number>
        <build-date>05-12-2023</build-date>
    </build-info>


<item>
            <title>[LU-12041] Fail to set global value with lnetctl import</title>
                <link>https://jira.whamcloud.com/browse/LU-12041</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;The global tunable &quot;retry_count&quot; has a dependency on the global tunable &quot;transaction_timeout&quot;. I noticed that when using lnetctl import to configure LNet that retry_count would sometimes fail to be set because it needs to be less than or equal to &quot;transaction_timeout&quot;.&lt;/p&gt;

&lt;p&gt;Here&apos;s the lnet.conf:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;sles15build01:~ # cat /tmp/lnet.conf
net:
    - net type: tcp
      local NI(s):
        - interfaces:
              0: eth0
        - interfaces:
              0: eth1
route:
    - net: o2ib
      gateway: 192.168.2.24@tcp
global:
    health_sensitivity: 70
    transaction_timeout: 70
    retry_count: 70
    recovery_interval: 70
    router_sensitivity: 70
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Here are the module parameter values before import:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;sles15build01:/sys/module/lnet/parameters # lnetctl lnet unconfigure; lustre_rmmod; modprobe lnet; lnetctl lnet configure
sles15build01:/sys/module/lnet/parameters # cd $PWD; for i in lnet_health_sensitivity lnet_recovery_interval lnet_retry_count lnet_transaction_timeout router_sensitivity_percentage; do echo &quot;$i: $(cat $i)&quot;; done
lnet_health_sensitivity: 1
lnet_recovery_interval: 1
lnet_retry_count: 3
lnet_transaction_timeout: 10
router_sensitivity_percentage: 100
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And here are the values after import. Note that lnet_retry_count is unchanged:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;sles15build01:/sys/module/lnet/parameters # lnetctl import /tmp/lnet.conf
sles15build01:/sys/module/lnet/parameters # cd $PWD; for i in lnet_health_sensitivity lnet_recovery_interval lnet_retry_count lnet_transaction_timeout router_sensitivity_percentage; do echo &quot;$i: $(cat $i)&quot;; done
lnet_health_sensitivity: 70
lnet_recovery_interval: 70
lnet_retry_count: 3
lnet_transaction_timeout: 70
router_sensitivity_percentage: 70
sles15build01:/sys/module/lnet/parameters #
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And the following is logged to dmesg:&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;[257406.875289] LNetError: 11708:0:(api-ni.c:513:retry_count_set()) Invalid value for lnet_retry_count (70). Has to be smaller than lnet_transaction_timeout (10)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Note that while the error message says &quot;Has to be smaller&quot;, the code actually allows values less than or equal.&lt;/p&gt;
&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;static int
retry_count_set(const char *val, cfs_kernel_param_arg_t *kp)
{
...
    if (value &amp;gt; lnet_transaction_timeout) {
        mutex_unlock(&amp;amp;the_lnet.ln_api_mutex);
        CERROR(&quot;Invalid value for lnet_retry_count (%lu). &quot;
               &quot;Has to be smaller than lnet_transaction_timeout (%u)\n&quot;,
               value, lnet_transaction_timeout);
        return -EINVAL;
    }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="55051">LU-12041</key>
            <summary>Fail to set global value with lnetctl import</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="4" iconUrl="https://jira.whamcloud.com/images/icons/priorities/minor.svg">Minor</priority>
                        <status id="1" iconUrl="https://jira.whamcloud.com/images/icons/statuses/open.png" description="The issue is open and ready for the assignee to start work on it.">Open</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="ashehata">Amir Shehata</assignee>
                                    <reporter username="hornc">Chris Horn</reporter>
                        <labels>
                            <label>lnet</label>
                            <label>medium</label>
                    </labels>
                <created>Mon, 4 Mar 2019 23:08:33 +0000</created>
                <updated>Fri, 16 Oct 2020 14:02:05 +0000</updated>
                                            <version>Lustre 2.12.0</version>
                    <version>Lustre 2.13.0</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                            <comments>
                            <comment id="243305" author="hornc" created="Mon, 4 Mar 2019 23:11:27 +0000"  >&lt;p&gt;As an aside, I think it would be better if these variables had consistent naming between the yaml and the actual module parameters.&lt;/p&gt;

&lt;div class=&quot;preformatted panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;
&lt;pre&gt;YAML Name             Mod Param Name
health_sensitivity    lnet_health_sensitivity
transaction_timeout   lnet_transaction_timeout
retry_count           lnet_retry_count
recovery_interval     lnet_recovery_interval
router_sensitivity    router_sensitivity_percentage
numa_range            lnet_numa_range
max_intf              lnet_interfaces_max
discovery             lnet_peer_discovery_disabled (has an inverse relationship!?)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="243367" author="ashehata" created="Tue, 5 Mar 2019 20:21:16 +0000"  >&lt;p&gt;I see the problem there. We should be taking into consideration the dependency between retry_count and transaction_timeout. So when you configure it through YAML, it would configure the transaction_timeout first and then the retry_count.&lt;/p&gt;

&lt;p&gt;Regarding the YAML vs Mod Param name, the only concern I have there is that the module param names are longer and might be &quot;too much&quot; to type. If that consensus is that&apos;s not a problem, then I don&apos;t have a problem of changing that in YAML.&lt;/p&gt;

&lt;p&gt;However, note that LNet Health is out in 2.12. I don&apos;t think it&apos;s widely used yet, so I&apos;m not sure if that&apos;s going to be a problem with backwards compatibility.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                            <customfield id="customfield_10890" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10390" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i00cnz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10060" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Severity</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10022"><![CDATA[3]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>