<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:34:11 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-3469] OSP dt_sync() operation should flush pending destroys and other updates</title>
                <link>https://jira.whamcloud.com/browse/LU-3469</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;lod_sync() should be changed to allow flushing the pending OST object destroys so that LFSCK can ensure that the OST state is consistent after pass 1 is completed:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;call local/child OSD dt_sync() first, so that unlink name commit callbacks will be run and schedule all of the OST object destroys&lt;/li&gt;
	&lt;li&gt;OSP dt_sync() will wait until all of the pending object destroys are at least sent to the OSTs (accessing their respective OST objects and removing them from the orphan list).  They do not necessarily need to be committed.&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="19411">LU-3469</key>
            <summary>OSP dt_sync() operation should flush pending destroys and other updates</summary>
                <type id="7" iconUrl="https://jira.whamcloud.com/images/icons/issuetypes/task_agile.png">Technical task</type>
                            <parent id="23439">LU-4701</parent>
                                    <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="yong.fan">nasf</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                    </labels>
                <created>Thu, 13 Jun 2013 06:38:26 +0000</created>
                <updated>Tue, 22 Jul 2014 17:30:56 +0000</updated>
                            <resolved>Wed, 4 Jun 2014 12:00:21 +0000</resolved>
                                    <version>Lustre 2.6.0</version>
                                    <fixVersion>Lustre 2.6.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                            <comments>
                            <comment id="66153" author="adilger" created="Tue, 10 Sep 2013 03:58:01 +0000"  >&lt;p&gt;Alex, any comments on this issue?&lt;/p&gt;</comment>
                            <comment id="66358" author="adilger" created="Wed, 11 Sep 2013 15:56:15 +0000"  >&lt;p&gt;One proposal is to have LFSCK only do a sync on a specific FID (e.g. the orphan object FID) will cause the pending destroys to be flushed. There is a larger question of whether sync on the LOD in general should cause all the destroys to be flushed, so that users can force file deletions to be flushed to the OSTs and release space. &lt;/p&gt;

&lt;p&gt;This issue is a fairly rare case of files being deleted that were traversed in the last 15 or so seconds of the phase II namespace scan. At worst this would result in previously-deleted files being linked into lost+found. &lt;/p&gt;</comment>
                            <comment id="78435" author="rhenwood" created="Wed, 5 Mar 2014 03:38:30 +0000"  >&lt;p&gt;After discussion with Fan Yong: I would like this bug to be considered for Blocker status.&lt;/p&gt;</comment>
                            <comment id="79647" author="yong.fan" created="Wed, 19 Mar 2014 08:32:20 +0000"  >&lt;p&gt;Recently, I hit some test failures for test_18d/test_18e. The root reason is that the async repair operations triggered during first cycle scanning are not executed until orphan handling phase.&lt;/p&gt;

&lt;p&gt;So we need the dt_sync() for that.&lt;/p&gt;</comment>
                            <comment id="81918" author="bzzz" created="Fri, 18 Apr 2014 05:19:23 +0000"  >&lt;p&gt;Yong, could you point out which specific lines will be calling dt_sync(), please?&lt;/p&gt;</comment>
                            <comment id="81921" author="yong.fan" created="Fri, 18 Apr 2014 05:53:04 +0000"  >&lt;p&gt;Alex, the current LFSCK does not call it since osp_sync() is not implemented. But it is easy to add it as the following patch:&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;diff --git a/lustre/lfsck/lfsck_layout.c b/lustre/lfsck/lfsck_layout.c
index de96726..7be2346 100644
--- a/lustre/lfsck/lfsck_layout.c
+++ b/lustre/lfsck/lfsck_layout.c
@@ -3435,6 +3435,9 @@ &lt;span class=&quot;code-keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; lfsck_layout_assistant(void *args)
                                com-&amp;gt;lc_time_last_checkpoint +
                                cfs_time_seconds(LFSCK_CHECKPOINT_INTERVAL);
 
+                       &lt;span class=&quot;code-comment&quot;&gt;/* flush all async updating before handling orphan. */&lt;/span&gt;
+                       dt_sync(env, lfsck-&amp;gt;li_next);
+
                        &lt;span class=&quot;code-keyword&quot;&gt;while&lt;/span&gt; (llmd-&amp;gt;llmd_in_double_scan) {
                                struct lfsck_tgt_descs  *ltds =
                                                        &amp;amp;lfsck-&amp;gt;li_ost_descs;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="82069" author="adilger" created="Mon, 21 Apr 2014 17:32:56 +0000"  >&lt;p&gt;Alex, Fan Yong, is there any reason not to just convert the previous comment into a patch?  Is there more work to be done?&lt;/p&gt;</comment>
                            <comment id="82070" author="bzzz" created="Mon, 21 Apr 2014 17:35:13 +0000"  >&lt;p&gt;like said before, osp_sync() is empty yet, I&apos;ve been working on this.&lt;/p&gt;</comment>
                            <comment id="82123" author="bzzz" created="Tue, 22 Apr 2014 07:01:18 +0000"  >&lt;p&gt;also, at the moment I&apos;m not sure just a single dt_sync() is good enough. failed osp_sync() isn&apos;t any different from failed transaction? if we can&apos;t complete one phase on a specific OST we shouldn&apos;t continue with that OST in this LFSCK run? IOW, we&apos;d prefer to track per-OST status rather than combined one which doesn&apos;t let us learn which OSTs are safe to proceed?&lt;/p&gt;</comment>
                            <comment id="82128" author="yong.fan" created="Tue, 22 Apr 2014 09:05:27 +0000"  >&lt;p&gt;If osp_sync() is failed to flush all pending destroy to OSTs, and if the LFSCK goes ahead for orphan handling, then the LFSCK may found some OST-object)(s) which parent MDT-object have been destroyed on the MDT(s) by unlink, but the LFSCK cannot be aware of the race unlink, so it will re-create the MDT-object(s), that is unexpected.&lt;/p&gt;

&lt;p&gt;One possible solution is that, if some osp_sync() failed, then skip orphan handling on related OST(s).&lt;/p&gt;</comment>
                            <comment id="82151" author="bzzz" created="Tue, 22 Apr 2014 15:06:35 +0000"  >&lt;p&gt; &lt;a href=&quot;http://review.whamcloud.com/10046&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/10046&lt;/a&gt; - this patch implements osp_sync() which is synchronous. give the discussion above I tend to think it&apos;d be better to call into all OSPs/OSDs directly from LFSCK. in the long term, something like an empty (or almost empty &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.whamcloud.com/images/icons/emoticons/smile.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; async transactions with commit callbacks registered would serve better being concurrent.&lt;/p&gt;</comment>
                            <comment id="84720" author="adilger" created="Thu, 22 May 2014 17:17:11 +0000"  >&lt;p&gt;Alex, Fan Yong, what is needed next for this patch?  Are further changes needed in the LFSCK code to start using this new functionality?&lt;/p&gt;</comment>
                            <comment id="84765" author="yong.fan" created="Fri, 23 May 2014 01:24:04 +0000"  >&lt;p&gt;Generally, the patch looks good, but we still cannot land the patch because of Maloo test failure.&lt;/p&gt;</comment>
                            <comment id="85562" author="jlevi" created="Tue, 3 Jun 2014 12:08:13 +0000"  >&lt;p&gt;Assigned to Fan Yong as he has updated the patch&lt;/p&gt;</comment>
                            <comment id="85688" author="pjones" created="Wed, 4 Jun 2014 12:00:21 +0000"  >&lt;p&gt;Landed for 2.6&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10120">
                    <name>Blocker</name>
                                            <outwardlinks description="is blocking">
                                        <issuelink>
            <issuekey id="19005">LU-3336</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="25678">LU-5387</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </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|hzvt9z:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>8679</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>