<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 03:03:00 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-13643] FLR3: Immediate file write mirroring</title>
                <link>https://jira.whamcloud.com/browse/LU-13643</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;FLR currently implements delayed file write mirroring, where the initial write is done to a single mirror, and an external tool eventually synchronizes the data to the other mirror(s) of the file.  If the file is ever modified, then the mirror component(s) other than the one modified is marked stale, and needs to be synchronized by the external tool.  This mechanism saves bandwidth from the clients, and still provides data availability unless the file is lost immediately after it is written.&lt;/p&gt;

&lt;p&gt;However, if the file is modified afterward, resyncing the mirrors of the modified component may be cause a large amount of write amplification, or potentially prevent the stale mirrors from being resync&apos;d if it is continuously being modified.  It would be preferable to implement immediate file write mirroring, so that the client can submit the same page to multiple RPCs to different OST objects and keep them both updated concurrently.&lt;/p&gt;

&lt;p&gt;Immediate file write (IFW) mirroring may not be desired for all applications, so it should have an &lt;tt&gt;LCME_FL_IMMEDIATE&lt;/tt&gt; flag stored in the component(s) indicating the clients should keep both copies uptodate.  Having per-component flags will allow configurations where e.g. two flash mirrors are immediately written, but a third/fourth disk mirror could use delayed resync for emergency recovery and/or cold storage (e.g. if the flash mirrors are only short term hot copies of the file).&lt;/p&gt;

&lt;p&gt;The IFW client will need to notify the MDS whether it can keep the mirrors in sync, otherwise it needs to maintain the current behavior of marking all but one mirror &lt;tt&gt;LCME_FL_STALE&lt;/tt&gt; when the client writes to the file.  At the coarsest grain, this means the client needs an &lt;tt&gt;OBD_CONNECT2_IMMEDIATE&lt;/tt&gt; connection-time flag, but it may be able to indicate its intent on a per-file level (e.g. with the initial write intent) so that it can do this on a case-by-case basis (e.g. remote clients should probably not do double writes).&lt;/p&gt;</description>
                <environment></environment>
        <key id="59466">LU-13643</key>
            <summary>FLR3: Immediate file write mirroring</summary>
                <type id="2" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11311&amp;avatarType=issuetype">New Feature</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>Sat, 6 Jun 2020 09:51:33 +0000</created>
                <updated>Mon, 20 Jul 2020 15:59:27 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                            <comments>
                            <comment id="275775" author="nrutman" created="Mon, 20 Jul 2020 15:59:27 +0000"  >&lt;p&gt;There are a lot of complicated questions related to this feature.&lt;br/&gt;
1. Are locks held for each OST mirror? What if the extents don&apos;t match? Pages are assumed to be under a single lock at the moment; would now need to be checked against multiple locks. What if one lock is called back, but not the other? Can we use a &quot;primary mirror&quot; as a lock proxy for all other stripes instead? Does that mean layouts have to match?&lt;br/&gt;
2. What happens on write failure? Success if successfully written to a majority of mirrors, or EIO if any one of them fails? What happens if one mirror is unresponsive? Choose a new mirror layout? Revert to unmirrored? How long before we give up? How do we track which OST has the latest write? What if mirror2 success, mirror1 failure, and client dies before retry &amp;#8211; how do we know which copy is correct?&lt;br/&gt;
3. How do we detect errors? Verify-on-read everything? What if two mirrors disagree? How do we determine which is correct? Who initiates/executes a reconstruction?&lt;/p&gt;

&lt;p&gt;I think IFW is a very desirable feature to improve Lustre&apos;s data integrity and availability; I&apos;m just concerned that there is a whole lot of detail that needs to be ironed out in an HLD before anything can be implemented.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="56621">LU-12649</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|i0123j:</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>