<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:11:32 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-904] import invalidation doesn&apos;t fail all requests</title>
                <link>https://jira.whamcloud.com/browse/LU-904</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;When client invaliates import on eviction, it only abort the requests in sending list (imp_sending_list) and delay list (imp_delayed_list), but the requests which are in request set but not linked in sending/delayed list will not be failed out, then those requests will stay across eviction and be sent later, which could probably cause data corruption at the end.&lt;/p&gt;

&lt;p&gt;Those leaked requests are usually the retry request, for instance: in brw_interpret(), if we found a request failed for a recoverable error, we&apos;ll try to generate a new request and retry it, such retry request will usually be kept in the request set for a while, see ptlrpc_send_new_req():&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;if&lt;/span&gt; (req-&amp;gt;rq_sent &amp;amp;&amp;amp; (req-&amp;gt;rq_sent &amp;gt; cfs_time_current_sec()))
                RETURN (0);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;so if the import invalidation happened before the request is being added into sending or delayed list, the request will not be aborted.&lt;/p&gt;

&lt;p&gt;We probably need another list to track those requests and make sure they are failed out during invalidation.&lt;/p&gt;</description>
                <environment></environment>
        <key id="12619">LU-904</key>
            <summary>import invalidation doesn&apos;t fail all requests</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="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="niu">Niu Yawei</assignee>
                                    <reporter username="niu">Niu Yawei</reporter>
                        <labels>
                    </labels>
                <created>Thu, 8 Dec 2011 06:08:57 +0000</created>
                <updated>Fri, 28 Sep 2012 12:00:30 +0000</updated>
                            <resolved>Mon, 21 May 2012 04:10:25 +0000</resolved>
                                                    <fixVersion>Lustre 2.3.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                            <comments>
                            <comment id="26474" author="niu" created="Fri, 13 Jan 2012 03:47:31 +0000"  >&lt;p&gt;patch for master: &lt;a href=&quot;http://review.whamcloud.com/1962&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/1962&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="26690" author="adilger" created="Mon, 16 Jan 2012 23:56:50 +0000"  >&lt;p&gt;The patch in &lt;a href=&quot;http://review.whamcloud.com/1962&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/1962&lt;/a&gt; appears to be moving in just the opposite direction - that requests will be resent from the client if -EINPROGRESS is returned.  How does that relate to the bug described here?&lt;/p&gt;

&lt;p&gt;Also, what effect does this implication have to client/server interoperability?  What will an old client do with -EINPROGRESS?  Since this is not in the list of recoverable error codes, the client will immediately fail instead of retrying.&lt;/p&gt;</comment>
                            <comment id="26692" author="niu" created="Tue, 17 Jan 2012 00:46:57 +0000"  >&lt;p&gt;Hi, Andreas&lt;/p&gt;

&lt;p&gt;The patch includes two part:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;client redo io infinitely when get -EINPROGRESS from server;&lt;/li&gt;
	&lt;li&gt;fix the defect mentioned in this ticket by introducing imp_generation_set stuff;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Since the defect isn&apos;t easy to be triggered with limited retry count, I put the -EINPROGRESS stuff in this patch, then we can easily inject the -EINPROGRESS error in test script to trigger the defect.&lt;/p&gt;

&lt;p&gt;The old client will just fail the io with -EINPROGRESS, so when old client interoperate with Orion server,the client will just fail the io with -EINPROGRESS when Orion server want it retry until quota master available, that&apos;s why we want to put this patch in 2.2 client. Of course, we can also fix the interoperability issue in Orion server (not return -EINPROGRESS for old client request, but acquire quota infinitely on server side like what the current master code does), obviously, this way is much more complex than patching the 2.2 client.&lt;/p&gt;</comment>
                            <comment id="26695" author="adilger" created="Tue, 17 Jan 2012 03:58:40 +0000"  >&lt;p&gt;Two issues arise in this case:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;this assumes that orion servers only need to interoperate with 2.2 clients at the oldest.  I don&apos;t think that will be true for LLNL and other customers.&lt;/li&gt;
	&lt;li&gt;how does the server know whether the client understands -EINPROGRESS?  That would need an OBD_CONNECT flag.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I&apos;m not against getting interoperability support into earlier versions of Lustre, but this might be difficult to get into 2.2 at this point, and it still doesn&apos;t address interoperability with 1.8 and 2.1 clients.  You should discuss this with Johann, but I don&apos;t think this would be accepted into 2.1.1 either, but it might.&lt;/p&gt;</comment>
                            <comment id="39115" author="niu" created="Mon, 21 May 2012 04:10:25 +0000"  >&lt;p&gt;patch landed for 2.3&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                            <subtask id="15089">LU-1582</subtask>
                    </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|hzv6rz:</customfieldvalue>

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