<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:54:26 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-12648] FLR2: File versioning with FLR and &quot;nosync&quot; files</title>
                <link>https://jira.whamcloud.com/browse/LU-12648</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;The FLR implementation and &lt;tt&gt;struct lcme_entry&lt;/tt&gt; support functionality to mark an FLR file mirror with &quot;&lt;tt&gt;lcme_flags |= LCME_FL_NOSYNC&lt;/tt&gt;&quot; flag using the command:&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;lfs setstripe --comp-set --comp-id=N --comp-flags=nosync &amp;lt;file&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This causes the MDS to store the current timestamp into the component entry&apos;s &lt;tt&gt;lcme_timestamp&lt;/tt&gt; field (should it get a timestamp in the RPC from the client?), and &quot;&lt;tt&gt;lfs mirror resync &amp;lt;file&amp;gt;&lt;/tt&gt;&quot; will no longer resync that mirror by default.  New mirrors can still be created for the file, and any mirrors not marked &lt;tt&gt;NOSYNC&lt;/tt&gt; will continue to be updated by &quot;&lt;tt&gt;lfs mirror resync&lt;/tt&gt;&quot; when it is run.&lt;/p&gt;

&lt;p&gt;This allows a basic form of file versioning to be enabled for a file, where that mirror will keep the original file contents if the file is later modified, and &quot;&lt;tt&gt;lfs mirror read --mirror-id=M &amp;lt;file&amp;gt;&lt;/tt&gt;&quot; can be used to read from a specific mirror of the file.&lt;/p&gt;

&lt;p&gt;In order to make this functionality into a more useful feature, a number of improvements should be made:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;add a &quot;&lt;tt&gt;lfs mirror flags --mirror-id=M --comp-flags=&amp;lt;flags&amp;gt; &amp;lt;file&amp;gt; ...&lt;/tt&gt;&quot; command so that the &quot;&lt;tt&gt;nosync&lt;/tt&gt;&quot; flag (and others) will consistently be set on all mirrors of a file, rather than just a single component, and puts this functionality in the same place as other mirror commands where it is more easily found&lt;/li&gt;
	&lt;li&gt;add a &quot;&lt;tt&gt;lfs mirror open &lt;span class=&quot;error&quot;&gt;&amp;#91;--mirror-in=M&amp;#93;&lt;/span&gt; &lt;span class=&quot;error&quot;&gt;&amp;#91;--mirror-out=N&amp;#93;&lt;/span&gt;&lt;/tt&gt;&quot; command to allow opening file descriptors on specific mirrors for stdin and/or stdout of a process (similar to &quot;&lt;tt&gt;tee&lt;/tt&gt;&quot; or &quot;&lt;tt&gt;script&lt;/tt&gt;&quot;) so that they can work more easily with file versions.  This could work with any utility that can use stdin or stdout for the file, either with a specific &quot;&lt;tt&gt;-&lt;/tt&gt;&quot; filename option, or &lt;tt&gt;/dev/stdin&lt;/tt&gt; and &lt;tt&gt;/dev/stdout&lt;/tt&gt; as the filenames.&lt;/li&gt;
	&lt;li&gt;add the ability to &quot;auto-version&quot; a file on the MDS, so that a new (&lt;tt&gt;STALE&lt;/tt&gt;) mirror component is added to a file when it is modified and a &lt;tt&gt;NOSYNC&lt;/tt&gt; mirror would otherwise become &lt;tt&gt;STALE&lt;/tt&gt;.  The new mirror component would be resync&apos;d by an external tool as needed.&lt;/li&gt;
	&lt;li&gt;allow imposing a maximum limit on the number of file versions created for a single file.  This should be stored in the file layout along with the &quot;auto-version&quot; setting, and also be storable in a default directory layout that can be inherited by new files created in the directory.  When a new mirror is created for a file, the oldest version (by &lt;tt&gt;lcme_timestamp&lt;/tt&gt;) will be removed from the file as in &quot;&lt;tt&gt;lfs mirror split --delete&lt;/tt&gt;&quot;.&lt;/li&gt;
	&lt;li&gt;add the ability to preserve (pin) specific mirror versions so they aren&apos;t auto deleted?&lt;/li&gt;
	&lt;li&gt;add a &quot;&lt;tt&gt;lfs mirror restore --mirror-id=M&lt;/tt&gt;&quot; command to restore version &lt;tt&gt;M&lt;/tt&gt; to be the current version of the file (essentially &quot;&lt;tt&gt;lfs mirror resync&lt;/tt&gt;&quot; with the specified mirror as the source and updating all &lt;tt&gt;STALE&lt;/tt&gt; and valid mirrors (except one to be kept as a new file version)&lt;/li&gt;
	&lt;li&gt;add handling to &quot;&lt;tt&gt;lfs mirror split&lt;/tt&gt;&quot; to allow cleanup of versions by count and/or age to prune files that are consuming space for mirrors that are no longer needed.&lt;/li&gt;
	&lt;li&gt;add versioning support to the filesystem namespace, so that specific file versions can be accessed with a &quot;magic&quot; pathname.  According to &lt;a href=&quot;https://raymii.org/s/blog/File_versioning_and_deleting_on_OpenVMS.html&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;File versioning and deleting on OpenVMS&lt;/a&gt; the file versions were accessed with a &quot;&lt;tt&gt;;version&lt;/tt&gt;&quot; separator at the end of the file, but using &quot;&lt;tt&gt;;&lt;/tt&gt;&quot; may be problematic since this is a command separator in bash.  Perhaps &quot;&lt;tt&gt;,&lt;/tt&gt;&quot; would be better in this case, even if it may already be commonly used, by restricting it to the last bytes of the filename and matching a mirror number.&lt;/li&gt;
	&lt;li&gt;wildcards should be added to &lt;a href=&quot;https://winscp.net/forum/viewtopic.php?t=14962&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;match VMS behavior&lt;/a&gt; filename lookups in the VFS by stripping the version number from the end of the filename, doing a lookup on the basename, and then looking in the layout to find the version numer, such as:&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
	&lt;li&gt;&quot;&lt;tt&gt;,&amp;#42;&lt;/tt&gt;&quot; to mean all versions&lt;/li&gt;
	&lt;li&gt;&quot;&lt;tt&gt;,0&lt;/tt&gt;&quot; to mean oldest version&lt;/li&gt;
	&lt;li&gt;&quot;&lt;tt&gt;,&amp;#45;0&lt;/tt&gt;&quot; to mean most recent version&lt;/li&gt;
	&lt;li&gt;&quot;&lt;tt&gt;,&amp;#45;1&lt;/tt&gt;&quot; to mean next most recent version&lt;/li&gt;
	&lt;li&gt;&quot;&lt;tt&gt;,&amp;#45;n&lt;/tt&gt;&quot; to mean n-th previous version&lt;/li&gt;
&lt;/ol&gt;
</description>
                <environment></environment>
        <key id="56620">LU-12648</key>
            <summary>FLR2: File versioning with FLR and &quot;nosync&quot; files</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>Thu, 8 Aug 2019 20:19:55 +0000</created>
                <updated>Thu, 8 Aug 2019 20:40:43 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="52248">LU-11022</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <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|i00kyv:</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>