<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:57:36 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-13010] WBC: Reopen the file when WBC EX lock revoking</title>
                <link>https://jira.whamcloud.com/browse/LU-13010</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;For a file or directory flagged with Protect(P) state under the protection of EX WBC lock, the open() system call does not need to communicate with MDS, can also be executed locally in MemFS of Lustre WBC.&lt;/p&gt;

&lt;p&gt;However, Lustre is a stateful filesystem. Each open keeps a state on the MDS. We must keep transparency for applications once the EX WBC lock is cancelled. To achieve this goal, each local open will be recorded in the inode&#8217;s open list (or maintain pre dentry?); When the EX WBC lock is cancelling, it must reopen the files in the open list from MDS.&lt;/p&gt;

&lt;p&gt;For regular files, after reopened from MDS, the metadata and data I/O can use the reopened file handle. It is transparent to applications.&lt;/p&gt;</description>
                <environment></environment>
        <key id="57460">LU-13010</key>
            <summary>WBC: Reopen the file when WBC EX lock revoking</summary>
                <type id="7" iconUrl="https://jira.whamcloud.com/images/icons/issuetypes/task_agile.png">Technical task</type>
                            <parent id="51932">LU-10938</parent>
                                    <priority id="1" iconUrl="https://jira.whamcloud.com/images/icons/priorities/blocker.svg">Blocker</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="qian_wc">Qian Yingjin</reporter>
                        <labels>
                    </labels>
                <created>Tue, 26 Nov 2019 09:29:40 +0000</created>
                <updated>Mon, 10 Jan 2022 01:17:57 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                            <comments>
                            <comment id="258861" author="adilger" created="Tue, 26 Nov 2019 21:26:40 +0000"  >&lt;p&gt;Ideally, it would make sense to create the files on the MDS with an open call, with a small change to allow passing the number of openers on the client. That avoids to send an extra RPC to the MDS. &lt;/p&gt;</comment>
                            <comment id="259831" author="adilger" created="Fri, 13 Dec 2019 23:35:34 +0000"  >&lt;p&gt;It makes sense to align the implementation of &lt;tt&gt;MDS_OPEN&lt;/tt&gt; RPC generation with the &quot;&lt;a href=&quot;http://wiki.lustre.org/Simplified_Interoperability#MDS_OPEN_request_replay&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Simplified Interoperability MDS_OPEN request replay&lt;/a&gt;&quot; architecture.  In particular, change the client over to generating new &lt;tt&gt;MDS_OPEN&lt;/tt&gt; RPCs from the VFS file handles for all recovery so that there is a single unified mechanism for handling this.  This will also allow simplifying the client RPC replay code to remove &lt;tt&gt;mod_open_req&lt;/tt&gt;, &lt;tt&gt;mod_close_req&lt;/tt&gt;, &lt;tt&gt;rq_replay&lt;/tt&gt;, and a considerable amount of related complexity in &lt;tt&gt;ptlrpc&lt;/tt&gt; and &lt;tt&gt;mdc&lt;/tt&gt; code.&lt;/p&gt;

&lt;p&gt;There &lt;em&gt;may&lt;/em&gt; need to be a small amount of extra saved state in the Lustre file handle (e.g. &lt;tt&gt;rq_transno&lt;/tt&gt;) after the RPC is committed on the MDS and the RPC is dropped from &lt;tt&gt;imp_replay_list&lt;/tt&gt; in order to generate a new &lt;tt&gt;MDS_OPEN&lt;/tt&gt; RPC during replay.  However, it may also be enough for the &lt;tt&gt;MDS_OPEN&lt;/tt&gt; RPC to generate a fake &lt;tt&gt;rq_transno &amp;lt; exp_last_committed&lt;/tt&gt; so that it is before any other real RPC sent during recovery.&lt;/p&gt;

&lt;p&gt;Once this cleanup is done, then WBC open file handles would just generate &lt;tt&gt;MDS_OPEN&lt;/tt&gt; RPCs directly during WBC cache flush, without the need to save a lot of extra state on the client if many files are open.&lt;/p&gt;</comment>
                            <comment id="268936" author="gerrit" created="Thu, 30 Apr 2020 02:57:50 +0000"  >&lt;p&gt;Yingjin Qian (qian@ddn.com) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/38423&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/38423&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-13010&quot; title=&quot;WBC: Reopen the file when WBC EX lock revoking&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-13010&quot;&gt;LU-13010&lt;/a&gt; wbc: reopen files when root WBC EX lock is revoking&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 72e3461f56db0a9de513aba4547518b4f1d6e943&lt;/p&gt;</comment>
                            <comment id="268938" author="qian_wc" created="Thu, 30 Apr 2020 03:25:52 +0000"  >&lt;p&gt;For directories, it must be handled carefully for the -&amp;gt;readdir() call. &lt;br/&gt;
Currently the mechanism adopted by MemFS (tmpfs) is to simply scan the in-memory sub dentries of the directory in dcache linearly to fill the content returned to readdir call:  -&amp;gt;dcache_readdir(). &lt;br/&gt;
While Lustre new readdir implementation is much complex. It does readdir in hash order and uses hash of a file name as a telldir/seekdir cookie stored in the file handle. &lt;br/&gt;
Thus, we must find a method to bridge two implementation firstly.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="26823">LU-5703</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="51932">LU-10938</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|i00pxb:</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>
                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>