<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:45:28 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-11621] Add copy_file_range() API and use it for lfs migrate and mirror resync</title>
                <link>https://jira.whamcloud.com/browse/LU-11621</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;The &lt;tt&gt;copy_file_range()&lt;/tt&gt; API was added in kernel 4.4 and allows copying data between files without copying the data into userspace and then copying it back to the kernel again.  This should significantly speed up file copy operations, for applications which support this interface, and for Lustre tools such as &lt;tt&gt;lfs migrate&lt;/tt&gt; and &lt;tt&gt;lfs mirror resync&lt;/tt&gt; that may be copying a lot of file data.  While &lt;tt&gt;migrate&lt;/tt&gt; and &lt;tt&gt;resync&lt;/tt&gt; use &lt;tt&gt;O_DIRECT&lt;/tt&gt; to avoid the data copy to/from userspace, this has other unfortunate effects such as causing sync read and write operations and has often been slower than doing the data copy with async writes (e.g. &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-10278&quot; title=&quot;lfs migrate: make use of direct i/o optional&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-10278&quot;&gt;&lt;del&gt;LU-10278&lt;/del&gt;&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The &lt;tt&gt;copy_file_range()&lt;/tt&gt; API in theory allows server-side offload of data copies between files in the same filesystem (and in the near future possibly between different filesystems), which is implemented for NFS and CIFS, and this could be tied into the HSM copytool via &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-6081&quot; title=&quot;hsm: add file migrate support&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-6081&quot;&gt;LU-6081&lt;/a&gt; to avoid the need to copy the data to/from the client.  The copytool itself could also be modified to use &lt;tt&gt;copy_file_range()&lt;/tt&gt; to avoid the data copy on the HSM agent node to improve efficiency once the basic API is available.&lt;/p&gt;

&lt;p&gt;This ticket should focus on implementing the basic API and its use with a few of the built-in tools, and separate tickets can be used to implement this in the lhsmtool-posix copytool and pushing the copy action over to HSM agent nodes.&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;commit 29732938a6289a15e907da234d6692a2ead71855
Author:     Zach Brown &amp;lt;zab@redhat.com&amp;gt;
AuthorDate: Tue Nov 10 16:53:30 2015 -0500

    vfs: add copy_file_range syscall and vfs helper
    
    Add a copy_file_range() system call for offloading copies between
    regular files.
    
    This gives an interface to underlying layers of the storage stack which
    can copy without reading and writing all the data.  There are a few
    candidates that should support copy offloading in the nearer term:
    
    - btrfs shares extent references with its clone ioctl
    - NFS has patches to add a COPY command which copies on the server
    - SCSI has a family of XCOPY commands which copy in the device
    
    This system call avoids the complexity of also accelerating the creation
    of the destination file by operating on an existing destination file
    descriptor, not a path.
    
    Currently the high level vfs entry point limits copy offloading to files
    on the same mount and super (and not in the same file).  This can be
    relaxed if we get implementations which can copy between file systems
    safely.
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Later patches implement the &lt;tt&gt;-&amp;gt;copy_file_range&lt;/tt&gt; method for various filesystems:&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;3db11b2eecc0 btrfs: add .copy_file_range file operation
2e72448b07dc NFS: Add COPY nfs operation
9fe26045e98f xfs: add clone file and clone range vfs functions
620d8745b35d cifs: Introduce cifs_copy_file_range()
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="53924">LU-11621</key>
            <summary>Add copy_file_range() API and use it for lfs migrate and mirror resync</summary>
                <type id="4" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11310&amp;avatarType=issuetype">Improvement</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="simmonsja">James A Simmons</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                    </labels>
                <created>Mon, 5 Nov 2018 22:44:50 +0000</created>
                <updated>Wed, 15 Nov 2023 17:09:26 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>15</watches>
                                                                            <comments>
                            <comment id="236359" author="simmonsja" created="Mon, 5 Nov 2018 23:01:34 +0000"  >&lt;p&gt;Believe it no not I was planning on using this API to do my file presentation project. We can &quot;create&quot; new files out of various components of already existing files. I can take this up. The tricky part will be the non-aligned copies with components.&#160;&lt;/p&gt;</comment>
                            <comment id="270483" author="gerrit" created="Mon, 18 May 2020 16:08:38 +0000"  >&lt;p&gt;James Simmons (jsimmons@infradead.org) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/38651&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/38651&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11621&quot; title=&quot;Add copy_file_range() API and use it for lfs migrate and mirror resync&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11621&quot;&gt;LU-11621&lt;/a&gt; utils: optimize lhsmtool_posix with copy_file_range()&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 04bd4a2da275a8c9878a5a2961f0c6ad64af9ee5&lt;/p&gt;</comment>
                            <comment id="270886" author="simmonsja" created="Fri, 22 May 2020 00:39:43 +0000"  >&lt;p&gt;More work is coming&lt;/p&gt;</comment>
                            <comment id="271256" author="gerrit" created="Wed, 27 May 2020 05:05:41 +0000"  >&lt;p&gt;Oleg Drokin (green@whamcloud.com) merged in patch &lt;a href=&quot;https://review.whamcloud.com/38651/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/38651/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11621&quot; title=&quot;Add copy_file_range() API and use it for lfs migrate and mirror resync&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11621&quot;&gt;LU-11621&lt;/a&gt; utils: optimize lhsmtool_posix with copy_file_range()&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: ccac422cf9dd3b2390d1c70cd42eff06d2f53be3&lt;/p&gt;</comment>
                            <comment id="272398" author="gerrit" created="Tue, 9 Jun 2020 15:57:22 +0000"  >&lt;p&gt;James Simmons (jsimmons@infradead.org) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/38883&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/38883&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11621&quot; title=&quot;Add copy_file_range() API and use it for lfs migrate and mirror resync&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11621&quot;&gt;LU-11621&lt;/a&gt; utils: optimize migrate_copy_data() with copy_file_range()&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: eb8f28a159a2e9ebd27416fd62030787d5729a9e&lt;/p&gt;</comment>
                            <comment id="274982" author="gerrit" created="Fri, 10 Jul 2020 15:37:55 +0000"  >&lt;p&gt;James Simmons (jsimmons@infradead.org) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/39337&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/39337&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11621&quot; title=&quot;Add copy_file_range() API and use it for lfs migrate and mirror resync&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11621&quot;&gt;LU-11621&lt;/a&gt; utils: optimize lustre_rsync with copy_file_range()&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: f5aa44ebdd24a2e511eca6ced8a0e0da7738f842&lt;/p&gt;</comment>
                            <comment id="284370" author="gerrit" created="Thu, 5 Nov 2020 16:20:57 +0000"  >&lt;p&gt;James Simmons (jsimmons@infradead.org) uploaded a new patch: &lt;a href=&quot;https://review.whamcloud.com/40548&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://review.whamcloud.com/40548&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-11621&quot; title=&quot;Add copy_file_range() API and use it for lfs migrate and mirror resync&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-11621&quot;&gt;LU-11621&lt;/a&gt; utils: add special code to profile performance&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: ecef87f84b0e277d230db5b847357da84ca83e92&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="28048">LU-6081</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="27979">LU-6051</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="49437">LU-10278</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="51334">LU-10810</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="77972">LU-17124</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="60654">LU-13945</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="61952">LU-14208</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|i005rb:</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>