<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:40:45 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-4221] lctl conf_param &lt;obdname&gt;.ost.writethrough_cache_enable=N does not work anymore</title>
                <link>https://jira.whamcloud.com/browse/LU-4221</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Using 2.5.0 RC1, which I assume is what went GA.&lt;/p&gt;

&lt;p&gt;In previous releases of Lustre, it was possible to set this tunable via conf_param, but now it doesn&apos;t work:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;[root@mgs ~]# lctl conf_param testfs-OST0000.ost.writethrough_cache_enable=0
[root@mgs ~]# cat /proc/fs/lustre/obdfilter/testfs-OST0000/writethrough_cache_enable
1
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The command completes successfully, but we see the following in dmesg:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;LustreError: 15418:0:(obd_config.c:1341:class_process_proc_param()) testfs-OST0000: unknown param writethrough_cache_enable=0
LustreError: 15418:0:(obd_config.c:1591:class_config_llog_handler()) MGC10.42.42.5@tcp: cfg command failed: rc = -38
Lustre:    cmd=cf00f 0:testfs-OST0000  1:ost.writethrough_cache_enable=0
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;I understand that conf_param is on its way to being deprecated, and that set_param -P is preferred. However, conf_param should still work, right? It seems that some things still work as they always have, e.g.:&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;[root@mgs ~]# lctl conf_param testfs-OST0000.ost.client_cache_seconds=4242
[root@mgs ~]# cat /proc/fs/lustre/obdfilter/testfs-OST0000/client_cache_seconds
4242
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;In dmesg:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Lustre: Modifying parameter testfs-OST0000.ost.client_cache_seconds in log testfs-OST0000
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="21898">LU-4221</key>
            <summary>lctl conf_param &lt;obdname&gt;.ost.writethrough_cache_enable=N does not work anymore</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="1" iconUrl="https://jira.whamcloud.com/images/icons/priorities/blocker.svg">Blocker</priority>
                        <status id="5" iconUrl="https://jira.whamcloud.com/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="emoly.liu">Emoly Liu</assignee>
                                    <reporter username="mjmac">Michael MacDonald</reporter>
                        <labels>
                    </labels>
                <created>Wed, 6 Nov 2013 21:02:32 +0000</created>
                <updated>Fri, 17 Jan 2014 18:41:51 +0000</updated>
                            <resolved>Thu, 2 Jan 2014 14:37:55 +0000</resolved>
                                    <version>Lustre 2.6.0</version>
                                    <fixVersion>Lustre 2.6.0</fixVersion>
                    <fixVersion>Lustre 2.5.1</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                            <comments>
                            <comment id="70913" author="mjmac" created="Wed, 6 Nov 2013 21:15:34 +0000"  >&lt;p&gt;For the record, substituting obdfilter for ost in the command doesn&apos;t work either:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;[root@mgs ~]# lctl conf_param testfs-OST0000.obdfilter.writethrough_cache_enable=0
Make sure cfg_device is set first.
error: conf_param: Function not implemented
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="70915" author="adilger" created="Wed, 6 Nov 2013 21:27:54 +0000"  >&lt;p&gt;Strange.  The obdfilter parameters exist, though the tunable is actually moved to osd-ldiskfs instead of in obdfilter:&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;# lctl get_param *.*.writethrough_cache_enable     
obdfilter.testfs-OST0000.writethrough_cache_enable=1
obdfilter.testfs-OST0001.writethrough_cache_enable=1
obdfilter.testfs-OST0002.writethrough_cache_enable=1
osd-ldiskfs.testfs-OST0000.writethrough_cache_enable=1
osd-ldiskfs.testfs-OST0001.writethrough_cache_enable=1
osd-ldiskfs.testfs-OST0002.writethrough_cache_enable=1

# ls -l /proc/fs/lustre/obdfilter/testfs-OST0000/writethrough_cache_enable 
0 lrwxrwxrwx 1 root root 58 Nov  6 14:25 /proc/fs/lustre/obdfilter/testfs-OST0000/writethrough_cache_enable -&amp;gt; ../../osd-ldiskfs/testfs-OST0000/writethrough_cache_enable
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This may be the crux of the problem.  The &quot;set_param -P&quot; handler is just calling a usermode helper to walk the /proc path, and doesn&apos;t care about this.  The &quot;conf_param&quot; handler is doing this inside the kernel and maybe doesn&apos;t understand about the symlink?&lt;/p&gt;</comment>
                            <comment id="70923" author="pjones" created="Wed, 6 Nov 2013 22:04:06 +0000"  >&lt;p&gt;Emoly&lt;/p&gt;

&lt;p&gt;Could you please look into this one?&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;

&lt;p&gt;Peter&lt;/p&gt;</comment>
                            <comment id="70984" author="emoly.liu" created="Thu, 7 Nov 2013 16:35:11 +0000"  >&lt;p&gt;I will verify/investigate the symlink issue questioned by Andreas.&lt;/p&gt;</comment>
                            <comment id="71102" author="emoly.liu" created="Fri, 8 Nov 2013 05:54:58 +0000"  >&lt;p&gt;The root cause is that these symlink entries are not included by lproc variable list in ofd_process_config(). So, when searching through the list, the symlink can&apos;t be matched and ENOSYS is reported.&lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;&lt;span class=&quot;code-keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; ofd_process_config(&lt;span class=&quot;code-keyword&quot;&gt;const&lt;/span&gt; struct lu_env *env, struct lu_device *d,
                              struct lustre_cfg *cfg)
{
...
        &lt;span class=&quot;code-keyword&quot;&gt;switch&lt;/span&gt; (cfg-&amp;gt;lcfg_command) {
        &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt; LCFG_PARAM: {
                struct lprocfs_static_vars lvars;
...
                lprocfs_ofd_init_vars(&amp;amp;lvars);
                rc = class_process_proc_param(PARAM_OST, lvars.obd_vars, cfg,
                                              d-&amp;gt;ld_obd);
}

void lprocfs_ofd_init_vars(struct lprocfs_static_vars *lvars)
{                               
        lvars-&amp;gt;module_vars  = lprocfs_ofd_module_vars;
        lvars-&amp;gt;obd_vars     = lprocfs_ofd_obd_vars;
}   
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This list is initialized by lprocfs_ofd_init_vars(), while those symlink ones are defined in ofd_procfs_add_brw_stats_symlink() separately.&lt;/p&gt;

&lt;p&gt;We need to re-add the missing symlinks to the list.&lt;/p&gt;</comment>
                            <comment id="71104" author="emoly.liu" created="Fri, 8 Nov 2013 06:33:26 +0000"  >&lt;p&gt;If we can get parent proc entry, calling lprocfs_srch() to find the param in class_process_proc_param() should be easier than updating the list in xxx_process_config().&lt;/p&gt;

&lt;p&gt;I am working on the patch.&lt;/p&gt;</comment>
                            <comment id="71116" author="simmonsja" created="Fri, 8 Nov 2013 13:34:01 +0000"  >&lt;p&gt;I noticed this ticket and I have been working on moving all the proc code over to the seq_file. With newer kernels you can no longer transverse the tree with lprocfs_srch so I cached the parent proc entry in struct obd_device. Just tried this with my work. I instead get a &lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;76965.678055&amp;#93;&lt;/span&gt; LustreError: 23899:0:(mgs_handler.c:744:mgs_iocontrol()) MGS: setparam err: rc = -22&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;77095.862258&amp;#93;&lt;/span&gt; LustreError: 24014:0:(mgs_llog.c:335:mgs_new_fsdb()) fsname obdfilter is too long&lt;/p&gt;

&lt;p&gt;If this is a problem for obdfilter I better it is broken for other things as well.&lt;/p&gt;</comment>
                            <comment id="71118" author="emoly.liu" created="Fri, 8 Nov 2013 14:11:50 +0000"  >&lt;p&gt;James, thanks for your information! I know you are working on &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-3319&quot; title=&quot;Adapt to 3.10 upstream kernel proc_dir_entry change&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-3319&quot;&gt;&lt;del&gt;LU-3319&lt;/del&gt;&lt;/a&gt;. Did you try the command &quot;lctl conf_param testfs-OST0000.ost.writethrough_cache_enable=0&quot;? Could you please provide more logs or dmesg? &lt;/p&gt;

&lt;p&gt;Thanks.&lt;/p&gt;</comment>
                            <comment id="71231" author="emoly.liu" created="Mon, 11 Nov 2013 15:41:23 +0000"  >&lt;p&gt;I have a tentative patch without lprocfs_srch(). Now the problem is that how to get the real target proc entry, because the symlink entry has no read/write_proc. &lt;br/&gt;
I think there should be a better way than resolving the link path stored in entry-&amp;gt;data. &lt;/p&gt;</comment>
                            <comment id="71300" author="emoly.liu" created="Tue, 12 Nov 2013 05:53:41 +0000"  >&lt;p&gt;Thanks for fanyong&apos;s advice. We don&apos;t need to pass parent entry to get all the sub entries or try to resolve symbolic link path, instead, just pass conf param down the stack to let osd process it.&lt;/p&gt;

&lt;p&gt;I add case LCFG_PARAM to osd_process_config() and now it can recognize these symlink params.&lt;/p&gt;

&lt;p&gt;I will submit the patch later.&lt;/p&gt;</comment>
                            <comment id="71324" author="simmonsja" created="Tue, 12 Nov 2013 15:11:25 +0000"  >&lt;p&gt;Sorry I have been busy with &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-3373&quot; title=&quot;ldiskfs patches for FC19&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-3373&quot;&gt;&lt;del&gt;LU-3373&lt;/del&gt;&lt;/a&gt;/&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-3319&quot; title=&quot;Adapt to 3.10 upstream kernel proc_dir_entry change&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-3319&quot;&gt;&lt;del&gt;LU-3319&lt;/del&gt;&lt;/a&gt; work. Sounds like you have a better solution than what I have. I look forward to applying your solution to my work.&lt;/p&gt;</comment>
                            <comment id="71339" author="emoly.liu" created="Tue, 12 Nov 2013 17:28:32 +0000"  >&lt;p&gt;patch tracking at: &lt;a href=&quot;http://review.whamcloud.com/8238&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/8238&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="71432" author="simmonsja" created="Wed, 13 Nov 2013 16:39:04 +0000"  >&lt;p&gt;Testing with your patch I&apos;m getting.&lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;error&quot;&gt;&amp;#91;root@spoon45 tests&amp;#93;&lt;/span&gt;# lctl conf_param lustre-OST0000.ost.writethrough_cache_enable=1&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;root@spoon45 tests&amp;#93;&lt;/span&gt;# dmesg&lt;br/&gt;
[ 1383.895301] Lustre: Modifying parameter lustre-OST0000.ost.writethrough_cache_enable in log lustre-OST0000&lt;br/&gt;
[ 1392.871703] LustreError: 20254:0:(obd_config.c:1341:class_process_proc_param()) lustre-OST0000: unknown param writethrough_cache_enable=1&lt;br/&gt;
&lt;span class=&quot;error&quot;&gt;&amp;#91;root@spoon45 tests&amp;#93;&lt;/span&gt;# cat /proc/fs/lustre/obdfilter/lustre-OST0000/writethrough_cache_enable &lt;br/&gt;
1&lt;/p&gt;

&lt;p&gt;Its doing the right thing but I see a error reported in dmesg. Other than that the patch fixed this problem.&lt;/p&gt;
</comment>
                            <comment id="71437" author="adilger" created="Wed, 13 Nov 2013 17:32:57 +0000"  >&lt;p&gt;I guess the obdfilter code is complaining because it is processing the &quot;ost&quot; parameter, but the named parameter doesn&apos;t exist. This is desirable under normal usage. &lt;/p&gt;

&lt;p&gt;It probably makes sense to add an explicit skip of this parameter name in the obdfilter config processing code, if that is possible.  There may be a couple of other parameters that moved from obdfilter to osd that should also be skipped in obdfilter. &lt;/p&gt;</comment>
                            <comment id="71493" author="emoly.liu" created="Thu, 14 Nov 2013 01:12:19 +0000"  >&lt;p&gt;Yes, James, this error was reported because obdfilter didn&apos;t match the parameter in its static lproc var list, and then it passed the parameter to next module osd.&lt;/p&gt;

&lt;p&gt;Andreas, IMHO, I want to pass the parent entry to get the whole sub entries list, but it&apos;s not so easy to follow the link to get the target.&lt;/p&gt;</comment>
                            <comment id="72133" author="simmonsja" created="Fri, 22 Nov 2013 14:51:03 +0000"  >&lt;p&gt;Did testing with the latest patch and works as expected. No more complaining as well. Thanks.&lt;/p&gt;</comment>
                            <comment id="72212" author="adilger" created="Mon, 25 Nov 2013 06:36:08 +0000"  >&lt;p&gt;James, the uncertainty I have is that I think this patch will allow this specific parameter to be set, but it will result in warnings for every other OFD parameter that is not in the OSD.  If I&apos;m incorrect in this understanding, then I&apos;m happier to land the patch.&lt;/p&gt;</comment>
                            <comment id="72214" author="emoly.liu" created="Mon, 25 Nov 2013 07:53:41 +0000"  >&lt;p&gt;Andreas, this patch won&apos;t result in warnings for every other OFD parameter that is not in the OSD, because the warnings only happen when the parameter isn&apos;t matched. But as you said in &lt;a href=&quot;http://review.whamcloud.com/#/c/8238/3/lustre/obdclass/obd_config.c&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#/c/8238/3/lustre/obdclass/obd_config.c&lt;/a&gt; , this patch will make all the OFD parameters never get a warning.&lt;/p&gt;

&lt;p&gt;I will improve the patch and add a test case.&lt;/p&gt;</comment>
                            <comment id="74236" author="emoly.liu" created="Thu, 2 Jan 2014 09:32:52 +0000"  >&lt;p&gt;The patch for b2_6 has been landed.&lt;/p&gt;

&lt;p&gt;A backport for b2_5 is at &lt;a href=&quot;http://review.whamcloud.com/#/c/8618/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#/c/8618/&lt;/a&gt; .&lt;/p&gt;</comment>
                            <comment id="74238" author="pjones" created="Thu, 2 Jan 2014 14:37:55 +0000"  >&lt;p&gt;Landed for 2.6. Should land for 2.5.1 shortly.&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|hzw88v:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>11487</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>