<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:18:24 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-8533] Problems with ldiskfs patch series selection logic</title>
                <link>https://jira.whamcloud.com/browse/LU-8533</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-5276&quot; title=&quot;ldiskfs patches for FC19&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-5276&quot;&gt;&lt;del&gt;LU-5276&lt;/del&gt;&lt;/a&gt; (commit  995921a5c1e53b4d717de21dd3210406f6833689) introduced a change in the ldiskfs series selection logic.  Ostensibly the reason for this was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;    &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-5276&quot; title=&quot;ldiskfs patches for FC19&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-5276&quot;&gt;&lt;del&gt;LU-5276&lt;/del&gt;&lt;/a&gt; build: handle RHEL ldiskfs series more accurated&lt;/p&gt;

&lt;p&gt;    Since RHEL7 change RHEL_RELEASE macro format. So we need&lt;br/&gt;
    a unified way to handle it. Change using RHEL_MAJOR &amp;amp;&lt;br/&gt;
    RHEL_MINOR to decided which ldiskfs series to be choose.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The mentioned change in the RHEL_RELEASE macro was, to the best of my knowledge, simply that they started putting quotes around the number.  So for instance it went from something like this:&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;#define RHEL_RELEASE 200&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;to something like this:&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;#define RHEL_RELEASE &quot;300&quot;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;It would have been a pretty simple matter to hand either quotes or no quotes.  In fact I made such a change locally.  I&apos;m not sure why this required a complete change of the logic.&lt;/p&gt;

&lt;p&gt;But the new logic introduced a few problems, and I would argue that it should be reverted.&lt;/p&gt;

&lt;p&gt;First of all, the commit message subject claims that the new method is more accurate than the previous.  This is obviously incorrect.  The new method allows significantly &lt;em&gt;less&lt;/em&gt; accuracy than the previous method.  &lt;/p&gt;

&lt;p&gt;In the old method, we could target specific RHEL kernel versions, but in the new method we can only have a single series file per RHEL distro version.  If there are kernel updates within a rhel update, there is no longer any way to specify different series files for each kernel.  The previous method allowed that.&lt;/p&gt;

&lt;p&gt;Next, the new method absolutely guarantees that Lustre can &lt;em&gt;never&lt;/em&gt; build for any new RHEL version that comes out without developer intervention.  The old method supported kernel versions and more importantly, &lt;em&gt;ranges&lt;/em&gt; of kernel versions.  The last range was always X version AND NEWER.  So the most recent series file could always be tried with newer kernels.  If there was not too much change in the kernel, the series file can be applied cleanly and no developer intervention is needed.&lt;/p&gt;

&lt;p&gt;I would much prefer that we try to have the latest series applied to newer kernels, and fail during patch application time, then to fail to even try to apply any series files at all. (Currently it fails to even try).&lt;/p&gt;

&lt;p&gt;And it is also worth noting that the patch introduced this bug:&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;+       6[0-3]) LDISKFS_SERIES=&quot;2.6-rhel6.series&quot;       ;;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This range does not work.  Square brackets are used as quotes in autoconf&apos;s m4 system, so these square brackets disappear.  The 2.6-rhel6.series will never be used as written.&lt;/p&gt;

&lt;p&gt;In summary, the logic change introduced these problems:&lt;/p&gt;

&lt;ol&gt;
	&lt;li&gt;Less kernel version specificity&lt;/li&gt;
	&lt;li&gt;Guaranteed failure to build with every minor RHEL update&lt;/li&gt;
	&lt;li&gt;Broken use of square brackets&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;I would very much like to see this fixed before 2.9 comes out.&lt;/p&gt;</description>
                <environment></environment>
        <key id="39077">LU-8533</key>
            <summary>Problems with ldiskfs patch series selection logic</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="2" iconUrl="https://jira.whamcloud.com/images/icons/priorities/critical.svg">Critical</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="ys">Yang Sheng</assignee>
                                    <reporter username="morrone">Christopher Morrone</reporter>
                        <labels>
                            <label>llnl</label>
                    </labels>
                <created>Wed, 24 Aug 2016 00:45:02 +0000</created>
                <updated>Thu, 6 Oct 2016 23:02:52 +0000</updated>
                                            <version>Lustre 2.7.0</version>
                    <version>Lustre 2.8.0</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                            <comments>
                            <comment id="163009" author="pjones" created="Wed, 24 Aug 2016 15:43:11 +0000"  >&lt;p&gt;Yang Sheng&lt;/p&gt;

&lt;p&gt;Could you please advise on this issue?&lt;/p&gt;

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

&lt;p&gt;Peter&lt;/p&gt;</comment>
                            <comment id="163149" author="ys" created="Thu, 25 Aug 2016 16:31:23 +0000"  >&lt;p&gt;I am totally understand your point. First i think trying to keep ability for special kernel version against ldiskfs series is not necessary. Just every RHEL Update is enough. ldiskfs patches were already numerous.  Second, ldiskfs is very fragile. So i prefer handle it carefully rather than set a default value for a new kernel. It is risky even all patches applied. Of course, assign latest series to new kernel is not harder in current implement.  I am very appreciate you point out 6&lt;span class=&quot;error&quot;&gt;&amp;#91;0-3&amp;#93;&lt;/span&gt; bug, It is really a good catch. I&apos;ll push a patch to fix it.&lt;/p&gt;
</comment>
                            <comment id="163192" author="morrone" created="Thu, 25 Aug 2016 21:35:31 +0000"  >&lt;p&gt;As you say, ldiskfs is fragile.  It is entirely possible that the a patch series will not apply to all of the kernels released during a single RHEL Update.&lt;/p&gt;

&lt;p&gt;Don&apos;t confuse capability with requirements.  Just because we have the capability to support multiple kernels within a single RHEL update doesn&apos;t mean we have to have an explosion of patch series.  We can still choose exactly when we choose.  However should we ever choose to deal with that problem and have two patch series within an update, the new method prevents us from doing it.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Of course, assign latest series to new kernel is not harder in current implement.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Yes, it is harder in the current scheme.  That capability was built into the old scheme, but in the current scheme we would have to hack additional logic on the side.&lt;/p&gt;

&lt;p&gt;This rewrite smells like the classic Not-Invented-Here-Syndrome mistake.  The problem was handling quotes, so instead of making the simple change to handle quotes, the whole section was rewritten with less capabilities than what it replaced.&lt;/p&gt;</comment>
                            <comment id="163276" author="ys" created="Fri, 26 Aug 2016 17:01:49 +0000"  >&lt;p&gt;I think fragile can hardly be a reason to keep different patch series in single RHEL Update. In fact, I don&apos;t think it is a good practice to keep multiple series file for single Distro. &lt;br/&gt;
I said It is NOT harder to implement that apply latest patch series to new kernel in current. Also i think we should avoid to do so. Since it may cause some problem. This is what fragile i mean. &lt;br/&gt;
Anyway, Choice ldiskfs patch series depend on RHEL RELNO is more clear and agile. Also it is enough to handle all situations.  &lt;/p&gt;</comment>
                            <comment id="163307" author="morrone" created="Fri, 26 Aug 2016 18:58:40 +0000"  >&lt;blockquote&gt;&lt;p&gt;In fact, I don&apos;t think it is a good practice to keep multiple series file for single Distro.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I don&apos;t see how that argument is relevant.  The previous system did not force anyone to have extra patch series.  It just &lt;em&gt;allowed&lt;/em&gt; it when it was needed.  The current system needlessly makes it more difficult.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Anyway, Choice ldiskfs patch series depend on RHEL RELNO is more clear and agile. Also it is enough to handle all situations.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I&apos;m sorry, but that first claim (more clean) is very arguable, and the last two claims (more agile, able to handle all situations) are demonstrably false.&lt;/p&gt;

&lt;p&gt;Explain how the current system handles this situation:&lt;/p&gt;

&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;Two kernels have RHEL_MAJOR and RHEL_MINOR that are the same.  There are changes in ext4 between the two kernels, so the same ldiskfs patch series will not apply to both.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;It can&apos;t, right?  At least not without adding additional dirty logic on the side.  You can only choose one patch series per RHEL_MAJOR+RHEL_MINOR.  But there are multiple kernels released with matching RHEL_MAJOR+RHEL_MINOR.  RHEL_MAJOR+RHEL_MINOR is not a very unique way of identifying a kernel.  While RHEL is unlikely to change significant interaces in the kernel within a single RHEL update, ldiskfs patch series can be derailed by even a simple contextual change in ext4.  Those can, and do, happen.&lt;/p&gt;

&lt;p&gt;The old system could easily handle this situation.  It was, therefore, the more agile of the two solutions.&lt;br/&gt;
I can only guess that you don&apos;t see this as a problem because you think that Intel will just select one of the two kernels, and only maintain the series for that one.  But you have to remember that Lustre does &lt;em&gt;not&lt;/em&gt; own the kernel.  There are people out there, &lt;em&gt;your customers&lt;/em&gt;, that can&apos;t perfectly align our exact kernel version with the one that the Lustre team at Intel has decided to choose.  We have our own schedules and requires that dictate when we change kernels and which kernel versions we use.&lt;/p&gt;

&lt;p&gt;Next, the current system introduces a guaranteed compilation failure every time the RHEL_MAJOR+RHEL_MINOR changes.  While it is common to need a new patch series when that happens, it is not guaranteed.  The new system has introduced a &lt;em&gt;guaranteed&lt;/em&gt; failure into the process where previously there was only a likely failrue.  It was possible with the old system that the most recent patch series could apply.  And even if we accept that it is &lt;em&gt;very&lt;/em&gt; likely that a new patch series will be needed with every new RHEL update, I would rather the build system fail during patch application, and tell me exactly where the first failure is rather than having refuse to even try to apply a patch series.&lt;/p&gt;

&lt;p&gt;I would argue that refusing to apply a patch series without knowing that it will fail is also a &lt;em&gt;less&lt;/em&gt; agile approach.&lt;/p&gt;

&lt;p&gt;You have made it so that I can&apos;t add kernel support easily for kernels that Intel does not support without adding additional messy configure logic, rewriting the logic entirely, or overwriting the upstream patch series.&lt;/p&gt;

&lt;p&gt;None of those choices are desirable.  I want to be able to easily add a new kernel version and patch series if an upstream one does not suite my needs.&lt;/p&gt;

&lt;p&gt;This is not theoretical.  I have had to make ldiskfs patch series many, many times.  The previous kernel selection logic was designed to meet &lt;em&gt;all&lt;/em&gt; of our needs, not just &lt;em&gt;yours&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;You have made things harder for &lt;em&gt;me&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I&apos;m your customer.&lt;/p&gt;

&lt;p&gt;Please fix it.&lt;/p&gt;</comment>
                            <comment id="166904" author="ys" created="Thu, 22 Sep 2016 14:30:43 +0000"  >&lt;p&gt;Hi, Chris,&lt;/p&gt;

&lt;p&gt;So as you comment. Could you submit a patch to change it as you like please?&lt;/p&gt;

&lt;p&gt;Thanks,&lt;br/&gt;
YangSheng&lt;/p&gt;</comment>
                            <comment id="168593" author="morrone" created="Thu, 6 Oct 2016 23:02:52 +0000"  >&lt;p&gt;No.  I want you to put it back the way it was.&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|hzylx3:</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>