<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:13:53 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-8015] Replication of operation failed(-22): 2885 HLINK (3)</title>
                <link>https://jira.whamcloud.com/browse/LU-8015</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;I had a directory that contained two files (one is a hardlink of another):&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;# ls -il /hardlink/
total 120
163865 -rwxr-xr-x 2 root root 53400 Nov 11  2010 ed
163865 -rwxr-xr-x 2 root root 53400 Nov 11  2010 red
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After copying the directory to a Lustre filesystem:&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;cp -a /hardlink /mnt/lustre/
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Running lustre_rsync hit the following errors:&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;# lustre_rsync --source=/mnt/lustre/ --target=/mnt/backup/ --mdt=lustre-MDT0000 --user=cl1 --statuslog lustre_rsync.log --verbose
Lustre filesystem: lustre
MDT device: lustre-MDT0000
Source: /mnt/lustre/
Target: /mnt/backup/
Statuslog: lustre_rsync.log
Changelog registration: cl1
Starting changelog record: 0
Replication of operation failed(-22): 5 HLINK (3) [0x200000401:0x6e2:0x0] [0x200000401:0x6e1:0x0] ed
Replication of operation failed(-21): 6 SATTR (14) [0x200000401:0x6e1:0x0] [0x200000401:0x6e1:0x0] 
Errors: 2
lustre_rsync took 0 seconds
Changelog records consumed: 7
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The type of the target filesystem /mnt/backup/ is ext4. &lt;/p&gt;</description>
                <environment>Lustre Build: &lt;a href=&quot;https://build.hpdd.intel.com/job/lustre-master/3343/&quot;&gt;https://build.hpdd.intel.com/job/lustre-master/3343/&lt;/a&gt;</environment>
        <key id="36104">LU-8015</key>
            <summary>Replication of operation failed(-22): 2885 HLINK (3)</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="yujian">Jian Yu</assignee>
                                    <reporter username="yujian">Jian Yu</reporter>
                        <labels>
                    </labels>
                <created>Wed, 13 Apr 2016 01:21:44 +0000</created>
                <updated>Mon, 26 Sep 2016 21:03:29 +0000</updated>
                            <resolved>Wed, 27 Apr 2016 15:56:19 +0000</resolved>
                                    <version>Lustre 2.9.0</version>
                                    <fixVersion>Lustre 2.9.0</fixVersion>
                                        <due></due>
                            <votes>1</votes>
                                    <watches>13</watches>
                                                                            <comments>
                            <comment id="148699" author="yujian" created="Wed, 13 Apr 2016 02:03:04 +0000"  >&lt;p&gt;The output (with &quot;--debug 2&quot; option) of lustre_rsync command, and the Lustre debug logs (with &quot;debug=-1&quot; level) for Client and MDS are attached.&lt;/p&gt;</comment>
                            <comment id="148701" author="yujian" created="Wed, 13 Apr 2016 02:19:31 +0000"  >&lt;p&gt;The detailed output of lustre_rsync 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;***** Start 5 HLINK (3) [0x200000401:0x6e2:0x0] [0x200000401:0x6e1:0x0] ed *****
	fid2path hardlink/red, ed, 0 rc=0
	fid2path hardlink/ed, ed, 1 rc=0
##### End 5 HLINK (3) [0x200000401:0x6e2:0x0] [0x200000401:0x6e1:0x0] ed rc=-22 #####

***** Start 6 SATTR (14) [0x200000401:0x6e1:0x0] [0x200000401:0x6e1:0x0]  *****
setattr: /mnt/lustre//.lustre/fid/[0x200000401:0x6e1:0x0] /mnt/backup//hardlink [0x200000401:0x6e1:0x0]
##### End 6 SATTR (14) [0x200000401:0x6e1:0x0] [0x200000401:0x6e1:0x0]  rc=-21 #####
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Debug log on MDS:&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;00000004:20000000:0.0:1460512029.531552:0:31484:0:(mdt_hsm.c:345:mdt_hsm_state_set()) Incompatible flag change on [0x200000401:0x6e2:0x0]flags=0x2
00000004:00000001:0.0:1460512029.531554:0:31484:0:(mdt_hsm.c:346:mdt_hsm_state_set()) Process leaving via out_unlock (rc=18446744073709551594 : -22 : 0xffffffffffffffea)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Debug log on Client:&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;00000002:00000001:0.0:1460512029.686738:0:17272:0:(mdc_request.c:1703:mdc_ioc_hsm_state_set()) Process leaving via out (rc=18446744073709551594 : -22 : 0xffffffffffffffea)
&amp;lt;~snip~&amp;gt;
00000002:00000001:0.0:1460512029.686761:0:17272:0:(mdc_request.c:2075:mdc_iocontrol()) Process leaving via out (rc=18446744073709551594 : -22 : 0xffffffffffffffea)
00800000:00000001:0.0:1460512029.686763:0:17272:0:(obd_class.h:1143:obd_iocontrol()) Process leaving (rc=18446744073709551594 : -22 : ffffffffffffffea)
00800000:00000001:0.0:1460512029.686765:0:17272:0:(lmv_obd.c:1175:lmv_iocontrol()) Process leaving (rc=18446744073709551594 : -22 : ffffffffffffffea)
00000080:00000001:0.0:1460512029.686767:0:17272:0:(obd_class.h:1143:obd_iocontrol()) Process leaving (rc=18446744073709551594 : -22 : ffffffffffffffea)
00000080:00000010:0.0:1460512029.686768:0:17272:0:(llite_lib.c:2514:ll_finish_md_op_data()) kfreed &apos;op_data&apos;: 312 at ffff88004e3c0000.
00000080:00000001:0.0:1460512029.686770:0:17272:0:(file.c:2102:ll_hsm_state_set()) Process leaving (rc=18446744073709551594 : -22 : ffffffffffffffea)
00000080:00000040:0.0:1460512029.686772:0:17272:0:(llite_lib.c:1712:ll_setattr_raw()) [0x200000401:0x6e2:0x0]HSM set dirty failed: rc2 = -22
00000080:00000001:0.0:1460512029.686774:0:17272:0:(llite_lib.c:1715:ll_setattr_raw()) Process leaving
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="148792" author="jgmitter" created="Wed, 13 Apr 2016 19:13:12 +0000"  >&lt;p&gt;Hi Jian,&lt;/p&gt;

&lt;p&gt;Is this something you can have a look at?&lt;/p&gt;

&lt;p&gt;Thanks.&lt;br/&gt;
Joe&lt;/p&gt;</comment>
                            <comment id="148793" author="adilger" created="Wed, 13 Apr 2016 19:14:19 +0000"  >&lt;p&gt;Can you track down what the &quot;Incompatible flag change&quot; is?  Is lustre_rsync trying to copy some HSM xattr from the source to the target?&lt;/p&gt;</comment>
                            <comment id="148834" author="yujian" created="Wed, 13 Apr 2016 22:33:33 +0000"  >&lt;p&gt;On Client side, the code path is ll_setattr()-&amp;gt;ll_setattr_raw():&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeHeader panelHeader&quot; style=&quot;border-bottom-width: 1px;&quot;&gt;&lt;b&gt;ll_setattr_raw()&lt;/b&gt;&lt;/div&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; (ll_file_test_and_clear_flag(lli, LLIF_DATA_MODIFIED)) {
                struct hsm_state_set hss = {
                        .hss_valid = HSS_SETMASK,
                        .hss_setmask = HS_DIRTY,
                };
                &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; rc2;

                rc2 = ll_hsm_state_set(inode, &amp;amp;hss); ------------------------------------- &amp;gt; ll_hsm_state_set() &lt;span class=&quot;code-keyword&quot;&gt;finally&lt;/span&gt; called mdc_ioc_hsm_state_set() and got -EINVAL from MDS side
                /* truncate and write can happen at the same time, so that
                 * the file can be set modified even though the file is not
                 * restored from released state, and ll_hsm_state_set() is
                 * not applicable &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; the file, and rc2 &amp;lt; 0 is normal in &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;
                 * &lt;span class=&quot;code-keyword&quot;&gt;case&lt;/span&gt;. */
                &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (rc2 &amp;lt; 0)
                        CDEBUG(D_INFO, DFID &lt;span class=&quot;code-quote&quot;&gt;&quot;HSM set dirty failed: rc2 = %d\n&quot;&lt;/span&gt;,
                               PFID(ll_inode2fid(inode)), rc2);
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;On MDS side, mdt_hsm_state_set() was called to handle the MDS_HSM_STATE_SET rpc from Client:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeHeader panelHeader&quot; style=&quot;border-bottom-width: 1px;&quot;&gt;&lt;b&gt;mdt_hsm_state_set()&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;        /* Check &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; inconsistant HSM flagset.
         * DIRTY without EXISTS: no dirty &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; no archive was created.
         * DIRTY and RELEASED: a dirty file could not be released.
         * RELEASED without ARCHIVED: &lt;span class=&quot;code-keyword&quot;&gt;do&lt;/span&gt; not release a non-archived file.
         * LOST without ARCHIVED: cannot lost a non-archived file.
         */
        flags = ma-&amp;gt;ma_hsm.mh_flags;
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; ((flags &amp;amp; HS_DIRTY    &amp;amp;&amp;amp; !(flags &amp;amp; HS_EXISTS)) ||
            (flags &amp;amp; HS_RELEASED &amp;amp;&amp;amp; flags &amp;amp; HS_DIRTY) ||
            (flags &amp;amp; HS_RELEASED &amp;amp;&amp;amp; !(flags &amp;amp; HS_ARCHIVED)) ||
            (flags &amp;amp; HS_LOST     &amp;amp;&amp;amp; !(flags &amp;amp; HS_ARCHIVED))) {
                CDEBUG(D_HSM, &lt;span class=&quot;code-quote&quot;&gt;&quot;Incompatible flag change on &quot;&lt;/span&gt;DFID
                              &lt;span class=&quot;code-quote&quot;&gt;&quot;flags=&quot;&lt;/span&gt;LPX64&lt;span class=&quot;code-quote&quot;&gt;&quot;\n&quot;&lt;/span&gt;,
                       PFID(&amp;amp;info-&amp;gt;mti_body-&amp;gt;mbo_fid1), flags);
                GOTO(out_unlock, rc = -EINVAL); -------------------------------------------&amp;gt; -EINVAL was returned to mdc_ioc_hsm_state_set() on Client side
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="148847" author="yujian" created="Wed, 13 Apr 2016 23:46:59 +0000"  >&lt;p&gt;There are two places where LLIF_DATA_MODIFIED is likely to be set. One is in vvp_io_write_start(), and the other is in vvp_io_setattr_fini().&lt;br/&gt;
From the Client debug log, we can see:&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;00000080:00000001:0.0:1460512029.678658:0:17272:0:(vvp_io.c:1060:vvp_io_write_start()) Process entered
00000080:00200000:0.0:1460512029.678660:0:17272:0:(vvp_io.c:1080:vvp_io_write_start()) write: [0, 53400)
&amp;lt;~snip~&amp;gt;
00000080:00200000:0.0:1460512029.681032:0:17272:0:(vvp_io.c:1131:vvp_io_write_start()) write: nob 53400, result: 53400
00000080:00000001:0.0:1460512029.681033:0:17272:0:(vvp_io.c:1144:vvp_io_write_start()) Process leaving (rc=0 : 0 : 0)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And also:&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;00000080:00200000:0.0:1460512029.681212:0:17272:0:(vvp_io.c:312:vvp_io_fini()) [0x200000401:0x6e2:0x0] ignore/verify layout 0/0, layout version 0 restore needed 0
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The value after all of the &quot;restore needed&quot; messages is 0 in the debug log. So, LLIF_DATA_MODIFIED was only set in vvp_io_write_start(), not in vvp_io_setattr_fini(), and the file is not a restored file.&lt;/p&gt;</comment>
                            <comment id="148852" author="yujian" created="Wed, 13 Apr 2016 23:56:21 +0000"  >&lt;p&gt;According to the analysis in the above comments, we can see just checking LLIF_DATA_MODIFIED flag is not enough to make sure a file is a restored file. So, the following codes in ll_setattr_raw() need to be fixed:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeHeader panelHeader&quot; style=&quot;border-bottom-width: 1px;&quot;&gt;&lt;b&gt;ll_setattr_raw()&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;        /* If the file was restored, it needs to set dirty flag.
         *
         * We&apos;ve already sent MDS_DATA_MODIFIED flag in
         * ll_md_setattr() &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; truncate. However, the MDT refuses to
         * set the HS_DIRTY flag on released files, so we have to set
         * it again &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; the file has been restored. Please check how
         * LLIF_DATA_MODIFIED is set in vvp_io_setattr_fini().
         *
         * Please notice that &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; the file is not released, the previous
         * MDS_DATA_MODIFIED has taken effect and usually
         * LLIF_DATA_MODIFIED is not set(see vvp_io_setattr_fini()).
         * This way we can save an RPC &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; common open + trunc
         * operation. */
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (ll_file_test_and_clear_flag(lli, LLIF_DATA_MODIFIED)) {
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                            <comment id="148855" author="yujian" created="Thu, 14 Apr 2016 00:11:20 +0000"  >&lt;p&gt;Hi Jinshan,&lt;/p&gt;

&lt;p&gt;Could you please take a look at the above analysis to see whether it&apos;s in a correct direction? Thank you.&lt;/p&gt;</comment>
                            <comment id="148861" author="jay" created="Thu, 14 Apr 2016 01:17:00 +0000"  >&lt;p&gt;the race in ll_setattr_raw() should be normal and that error shouldn&apos;t be seen by user space applications.&lt;/p&gt;</comment>
                            <comment id="148878" author="yujian" created="Thu, 14 Apr 2016 08:09:19 +0000"  >&lt;p&gt;Jinshan is right. In the implementation of ll_setattr_raw(), the value of rc2 returned by ll_hsm_state_set() doesn&apos;t return to ll_setattr_raw(). However, in the experiment of ignoring the return value of ll_hsm_state_set(), the HLINK operation passed. Need investigate more. &lt;/p&gt;</comment>
                            <comment id="149003" author="yujian" created="Thu, 14 Apr 2016 20:20:22 +0000"  >&lt;p&gt;It turns out the &quot;-EINVAL&quot; error is another one returned from the following codes in lustre/utils/lustre_rsync.c:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeHeader panelHeader&quot; style=&quot;border-bottom-width: 1px;&quot;&gt;&lt;b&gt;lr_link()&lt;/b&gt;&lt;/div&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; (info-&amp;gt;src[0] == 0 || info-&amp;gt;dest[0] == 0)
                        /* Could not find the source or destination.
                         This can happen when some links don&apos;t exist
                         anymore. */
                        &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; -EINVAL;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And the defect is in the following codes:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeHeader panelHeader&quot; style=&quot;border-bottom-width: 1px;&quot;&gt;&lt;b&gt;lr_link()&lt;/b&gt;&lt;/div&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;                        len = strlen(info-&amp;gt;path) - strlen(info-&amp;gt;name);
                        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (len &amp;gt;= 0 &amp;amp;&amp;amp; strcmp(info-&amp;gt;path + len,
                                              info-&amp;gt;name) == 0)
                                ......
                        &lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (info-&amp;gt;src[0] == 0)
                                ......
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The above condition used to find out info-&amp;gt;src and info-&amp;gt;dest has defect in the following situations:&lt;br/&gt;
1) the source name ends with the destination name&lt;br/&gt;
2) the file has two links with the same name but in different directories&lt;/p&gt;

&lt;p&gt;With the guidance from John and Jinshan, I&apos;m creating a patch to fix the above issue.&lt;/p&gt;</comment>
                            <comment id="149057" author="gerrit" created="Fri, 15 Apr 2016 07:59:36 +0000"  >&lt;p&gt;Jian Yu (jian.yu@intel.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/19599&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/19599&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8015&quot; title=&quot;Replication of operation failed(-22): 2885 HLINK (3)&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8015&quot;&gt;&lt;del&gt;LU-8015&lt;/del&gt;&lt;/a&gt; utils: fix lr_link() to get correct src and dest&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: 878a003b75d49606f124e16ef61ae4d620cd49c3&lt;/p&gt;</comment>
                            <comment id="149855" author="gerrit" created="Fri, 22 Apr 2016 15:48:40 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) merged in patch &lt;a href=&quot;http://review.whamcloud.com/19599/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/19599/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8015&quot; title=&quot;Replication of operation failed(-22): 2885 HLINK (3)&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8015&quot;&gt;&lt;del&gt;LU-8015&lt;/del&gt;&lt;/a&gt; utils: fix lr_link() to get correct src and dest&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: a72e6ee375248636cac1ea212d517254c8850b88&lt;/p&gt;</comment>
                            <comment id="150373" author="jgmitter" created="Wed, 27 Apr 2016 15:56:19 +0000"  >&lt;p&gt;Landed to master for 2.9.0&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                                        </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="21086" name="lustre_rsync.client.debug.log.txt" size="5132356" author="yujian" created="Wed, 13 Apr 2016 02:03:04 +0000"/>
                            <attachment id="21087" name="lustre_rsync.mds.debug.log.txt" size="247" author="yujian" created="Wed, 13 Apr 2016 02:03:04 +0000"/>
                            <attachment id="21089" name="lustre_rsync.output.log.txt" size="3438" author="yujian" created="Wed, 13 Apr 2016 02:07:11 +0000"/>
                    </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|hzy7tb:</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>
                                                                                            <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>