<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 03:24: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-16182] llog_osd_prev_block() ASSERTION( last_rec-&gt;lrh_index == tail-&gt;lrt_index ) failed</title>
                <link>https://jira.whamcloud.com/browse/LU-16182</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;There is an LBUG triggered during MDT mount due to corruption in the Changelog catalog/log file:&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;LustreError: 29516:0:(llog_osd.c:1075:llog_osd_prev_block()) ASSERTION( last_rec-&amp;gt;lrh_index == tail-&amp;gt;lrt_index ) failed:
LustreError: 29516:0:(llog_osd.c:1075:llog_osd_prev_block()) LBUG
Pid: 29516, comm: mount.lustre
Call Trace:
libcfs_debug_dumpstack+0x53/0x80 [libcfs]
lbug_with_loc+0x45/0xc0 [libcfs]
llog_osd_prev_block+0x9f7/0xaf0 [obdclass]
llog_reverse_process+0x147/0xac0 [obdclass]
? changelog_init_cb+0x0/0x1f0 [mdd]
llog_cat_reverse_process_cb+0x157/0x540 [obdclass]
llog_reverse_process+0x269/0xac0 [obdclass]
llog_cat_reverse_process+0x199/0x2d0 [obdclass]
mdd_prepare+0x1269/0x1a00 [mdd]
mdt_prepare+0x51/0x3b0 [mdt]
server_start_targets+0x2574/0x2e10 [obdclass]
server_fill_super+0x108d/0x184c [obdclass]
lustre_fill_super+0x328/0x950 [obdclass]
mount_nodev+0x4d/0xb0
lustre_mount+0x38/0x60 [obdclass]
mount_fs+0x39/0x1b0
vfs_kern_mount+0x5f/0xf0
do_mount+0x24e/0xa40
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The kernel code should &lt;b&gt;not&lt;/b&gt; have an &lt;tt&gt;LASSERT()&lt;/tt&gt; check for data that is read from disk, so this should be removed and replaced with error handling:&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;
                LASSERT(last_rec-&amp;gt;lrh_index == tail-&amp;gt;lrt_index);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The &lt;tt&gt;llog_osd_prev_block()&lt;/tt&gt; function has many other places where errors are returned to the caller, so it looks (at first glance) that the &lt;tt&gt;LASSERT()&lt;/tt&gt; should be replaced with an error message that prints the llog record number and FID, and returns an error to the caller that stops changelog processing and either clears this record or deletes the whole changelog. &lt;/p&gt;

&lt;p&gt;Also, I see that &lt;tt&gt;changelog_init_cb()&lt;/tt&gt; also has &lt;tt&gt;LASSERT()&lt;/tt&gt; checks for the llog records that could fail if the records are corrupted:&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;
        LASSERT(llh-&amp;gt;lgh_hdr-&amp;gt;llh_flags &amp;amp; LLOG_F_IS_PLAIN);
        LASSERT(rec-&amp;gt;cr_hdr.lrh_type == CHANGELOG_REC);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;that should also be fixed.&lt;/p&gt;

&lt;p&gt;The &lt;tt&gt;llog_cat_reverse_process(changelog_init_cb)&lt;/tt&gt; handling looks like it is finding the highest changelog index currently in use?  If this reverse llog processing fails, then it may be that the last changelog index is lost?  Options would include doing &quot;forward&quot; llog processing, but this may also suffer from the same problem, or using the &lt;tt&gt;changelog_users&lt;/tt&gt; file to at least start with a changelog index higher than what the users have processed (e.g. &lt;tt&gt;current_index = max(user_index) + 10M&lt;/tt&gt; or similar).&lt;/p&gt;</description>
                <environment></environment>
        <key id="72493">LU-16182</key>
            <summary>llog_osd_prev_block() ASSERTION( last_rec-&gt;lrh_index == tail-&gt;lrt_index ) failed</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="wc-triage">WC Triage</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                    </labels>
                <created>Thu, 22 Sep 2022 21:34:22 +0000</created>
                <updated>Fri, 23 Sep 2022 01:11:03 +0000</updated>
                                            <version>Lustre 2.12.10</version>
                    <version>Lustre 2.15.2</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                            <outwardlinks description="duplicates">
                                        <issuelink>
            <issuekey id="40329">LU-8673</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                                        </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <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|i03113:</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>