<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:31:55 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-3209] layout swap with stripeless files allows layout gen collisions</title>
                <link>https://jira.whamcloud.com/browse/LU-3209</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;When swapping layouts between two files f0 and f1, if f1 has no striping then the layout gen of f0 is not incremented. This can be used to create layout gen collisions and cache inconsistencies:&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;# cd ~/lustre-release
# git describe
2.3.64-30-g5b91c09
# MOUNT_2=y llmount.sh
...
# cd /mnt/lustre
# touch f0
# multiop f1 m
# lfs swap_layouts /mnt/lustre2/f0 /mnt/lustre2/f1
# echo HI &amp;gt; /mnt/lustre2/f0
# cat f0
# cat /mnt/lustre2/f0
HI
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&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;# MOUNT_2=y llmount.sh
...
# cd /mnt/lustre
# echo OLD &amp;gt; f0
# echo NEW &amp;gt; f1
# multiop f2 m ## mknod
# lfs getstripe f0
f0
lmm_stripe_count:   1
lmm_stripe_size:    1048576
lmm_layout_gen:     0
lmm_stripe_offset:  1
	obdidx		 objid		 objid		 group
	     1	             2	          0x2	             0

# lfs swap_layouts /mnt/lustre2/f0 /mnt/lustre2/f2
# lfs swap_layouts /mnt/lustre2/f0 /mnt/lustre2/f1
# lfs getstripe f0
f0
lmm_stripe_count:   1
lmm_stripe_size:    1048576
lmm_layout_gen:     0
lmm_stripe_offset:  0
	obdidx		 objid		 objid		 group
	     0	             2	          0x2	             0

# cat f0
OLD
# cat /mnt/lustre2/f0
NEW
# cat f0
OLD
# cat /mnt/lustre2/f0
NEW
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&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;# MOUNT_2=y llmount.sh
...
# cd /mnt/lustre
# touch f0
# multiop f1 m
# lfs swap_layouts /mnt/lustre2/f0 /mnt/lustre2/f1
# echo &amp;gt; /mnt/lustre2/f0
#
# stat f0
  File: `f0&apos;
  Size: 0               Blocks: 0          IO Block: 4194304 regular empty file
Device: 2c54f966h/743766374d    Inode: 144115205255725134  Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2013-04-23 12:04:26.000000000 -0500
Modify: 2013-04-23 12:04:26.000000000 -0500
Change: 2013-04-23 12:04:26.000000000 -0500
# stat f1
stat: cannot stat `f1&apos;: Input/output error
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="18500">LU-3209</key>
            <summary>layout swap with stripeless files allows layout gen collisions</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="6" iconUrl="https://jira.whamcloud.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="2">Won&apos;t Fix</resolution>
                                        <assignee username="jhammond">John Hammond</assignee>
                                    <reporter username="jhammond">John Hammond</reporter>
                        <labels>
                            <label>hsm</label>
                            <label>mdd</label>
                    </labels>
                <created>Tue, 23 Apr 2013 17:28:47 +0000</created>
                <updated>Fri, 11 Mar 2022 15:23:36 +0000</updated>
                            <resolved>Fri, 11 Mar 2022 15:23:36 +0000</resolved>
                                    <version>Lustre 2.4.0</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                            <comments>
                            <comment id="56856" author="jay" created="Tue, 23 Apr 2013 18:56:37 +0000"  >&lt;p&gt;The problem is there is nowhere to store generation for an empty layout file. The only thing we can do is to hope customers won&apos;t run this test cases &lt;img class=&quot;emoticon&quot; src=&quot;https://jira.whamcloud.com/images/icons/emoticons/wink.png&quot; height=&quot;16&quot; width=&quot;16&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;</comment>
                            <comment id="56919" author="jcl" created="Wed, 24 Apr 2013 10:36:03 +0000"  >&lt;p&gt;We can forbid swap or transform the empty file into a released file before swaping&lt;/p&gt;</comment>
                            <comment id="56945" author="adilger" created="Wed, 24 Apr 2013 17:12:47 +0000"  >&lt;p&gt;Hmm, doesn&apos;t layout swap preserve the layout version on each file?  I thought that was part of the original patch.  That would make sense since the layout version only makes sense for the file that was being modified.&lt;/p&gt;</comment>
                            <comment id="56974" author="jcl" created="Wed, 24 Apr 2013 20:05:52 +0000"  >&lt;p&gt;layout swap increases each generation number, the issue with stripeless file is that we have no place to store it, or we have to transform it to a released layout&lt;/p&gt;</comment>
                            <comment id="56996" author="adilger" created="Wed, 24 Apr 2013 23:57:35 +0000"  >&lt;p&gt;For HSM, the layout would be LOV_PATTERN_RELEASED, so it will have a place to store the layout generation.  For stripeless files, I&apos;m not sure whether there is a real-world issue or not, since I don&apos;t see any valid case of swapping the an empty layout and then keeping the empty file.&lt;/p&gt;</comment>
                            <comment id="57003" author="jay" created="Thu, 25 Apr 2013 00:19:44 +0000"  >&lt;p&gt;&quot;For HSM, the layout would be LOV_PATTERN_RELEASED, so it will have a place to store the layout generation. For stripeless files, I&apos;m not sure whether there is a real-world issue or not, since I don&apos;t see any valid case of swapping the an empty layout and then keeping the empty file.&quot;&lt;/p&gt;

&lt;p&gt;This sounds reasonable. There should be no this kind of issue in real world.&lt;/p&gt;</comment>
                            <comment id="57022" author="jcl" created="Thu, 25 Apr 2013 11:12:25 +0000"  >&lt;p&gt;If we do not see any use case, the best is to forbid it so no risk of side effects&lt;/p&gt;</comment>
                            <comment id="57055" author="jay" created="Thu, 25 Apr 2013 16:39:55 +0000"  >&lt;p&gt;In that case, let me work out a patch.&lt;/p&gt;</comment>
                    </comments>
                    <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|hzvosf:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>7841</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>