<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 02:10:50 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-7660] FS default striping settings only honored on MDT 0</title>
                <link>https://jira.whamcloud.com/browse/LU-7660</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;From the manual &quot;Setting the striping specification on the root directory determines the striping for all new files created in the file system unless an overriding striping specification takes precedence (such as a striping layout specified by the application, or set using lfs setstripe, or specified for the parent directory).&quot; In a DNE setup, setting the default striping on the root directory only affects files created on MDT 0. See &lt;tt&gt;ll_dir_setstripe()&lt;/tt&gt;:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;                ...
                buf = param;
                &lt;span class=&quot;code-comment&quot;&gt;/* Get fsname and assume devname to be -MDT0000. */&lt;/span&gt;
                ll_get_fsname(inode-&amp;gt;i_sb, buf, MTI_NAME_MAXLEN);
                strcat(buf, &lt;span class=&quot;code-quote&quot;&gt;&quot;-MDT0000.lov&quot;&lt;/span&gt;);
		buf += strlen(buf);

                &lt;span class=&quot;code-comment&quot;&gt;/* Set root stripesize */&lt;/span&gt;
                sprintf(buf, &lt;span class=&quot;code-quote&quot;&gt;&quot;.stripesize=%u&quot;&lt;/span&gt;,
			lump ? le32_to_cpu(lump-&amp;gt;lmm_stripe_size) : 0);
                rc = ll_send_mgc_param(mgc-&amp;gt;u.cli.cl_mgc_mgsexp, param);
                &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (rc)
		        GOTO(end, rc);
                ...
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="34094">LU-7660</key>
            <summary>FS default striping settings only honored on MDT 0</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="laisiyao">Lai Siyao</assignee>
                                    <reporter username="jhammond">John Hammond</reporter>
                        <labels>
                            <label>dne</label>
                    </labels>
                <created>Wed, 13 Jan 2016 16:33:41 +0000</created>
                <updated>Wed, 13 Oct 2021 02:35:04 +0000</updated>
                            <resolved>Wed, 13 Jul 2016 18:12:38 +0000</resolved>
                                    <version>Lustre 2.5.0</version>
                    <version>Lustre 2.7.0</version>
                    <version>Lustre 2.8.0</version>
                                    <fixVersion>Lustre 2.9.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>11</watches>
                                                                            <comments>
                            <comment id="138899" author="adilger" created="Thu, 14 Jan 2016 09:19:54 +0000"  >&lt;p&gt;For the PFL project we were looking to change how default layouts worked anyway, because the existing mechanism of storing the stripe_count, stripe_size, and stripe_offset into lov_desc doesn&apos;t work for more complex layouts, such as layouts with OST pools or PFL.  My though is to actually store the filesystem default layout xattr on the root directory inode.  This will allow arbitrary layout template xattrs to be stored for the whole filesystem.  There needs to be a check that the layout template xattr doesn&apos;t physically get inherited by all new subdirectories and files in the root directory.&lt;/p&gt;

&lt;p&gt;This default layout should also be inherited by other MDTs, but where to store it?  We don&apos;t really want to physically store the layout on each remote directory, since an update to the filesystem-wide defaults should be inherited everywhere that doesn&apos;t have its own explicit default layout.  It could be stored on the &lt;tt&gt;REMOTE_PARENT_DIR&lt;/tt&gt; directory as a proxy for the filesystem root, and updated whenever the default is changed?  That is at least O(num_mdts) rather than O(num remote directories).  Unfortunately, &lt;tt&gt;REMOTE_PARENT_DIR&lt;/tt&gt; doesn&apos;t exist for osd-zfs.&lt;/p&gt;</comment>
                            <comment id="138950" author="jgmitter" created="Thu, 14 Jan 2016 18:42:28 +0000"  >&lt;p&gt;Hi Lai,&lt;br/&gt;
Can you have a look at this one?&lt;br/&gt;
Thanks,&lt;br/&gt;
Joe&lt;/p&gt;</comment>
                            <comment id="138958" author="jhammond" created="Thu, 14 Jan 2016 19:39:27 +0000"  >&lt;p&gt;Andreas, I think this is a good excuse to decouple the file striping on the root from the default for the FS. Can we do away with this botch and ask uses to either set the default at format time or to use conf params for each MDT?&lt;/p&gt;</comment>
                            <comment id="139015" author="adilger" created="Fri, 15 Jan 2016 12:17:43 +0000"  >&lt;p&gt;Lai, before you start any implementation, let&apos;s first discuss what the best way to fix this problem is.&lt;/p&gt;

&lt;p&gt;John, it is already possible to set the default stripe_count, stripe_size, stripe_offset at format time (see &lt;tt&gt;mkfs_opts()&lt;/tt&gt; and &lt;tt&gt;--param=lov.stripe_size&lt;/tt&gt; and friends), and store them into the lov_desc, but lov_desc is not very flexible.  It is already not possible to store a default OST pool name in lov_desc, and this approach will be completely unsuable to store a default PFL layout template in the future.  Also, it would require that e.g. mkfs.lustre or friends would need to be able to generate a composite layout.&lt;/p&gt;

&lt;p&gt;In this regard, I think it is pretty natural for the administrator to use &quot;lfs setstripe&quot; to specify the layout for the whole filesystem on the root directory.  Using &quot;lctl conf_param&quot; would mean that lctl needs to be able to generate a binary composite PFL layout in some manner (i.e. gain all of the setstripe options and layout parsing code) or store all of the options for a complex PFL layout and pass them to the MDTs as named parameters to change /proc settings for the lod at startup time.&lt;/p&gt;

&lt;p&gt;Also, what happens with sub-tree mounts?  Using the current scheme to set the filesystem default on the filesystem root would be implemented in the same manner, but storing it via conf_param/proc/mkfs wouldn&apos;t allow different defaults to be stored within the filesystem.&lt;/p&gt;

&lt;p&gt;Extending the existing mechanism to DNE seems to me an issue of passing the default layout from the root MDT to the other MDTs.  If the root MDT can determine a remote directory FID on each MDT then it could easily pass on the setstripe info.  One option would be to define a special FID for this that each MDT understands to mean &quot;use to store default layout for the filesystem&quot; that MDT0 can use to communicate to the remote MDTs.&lt;/p&gt;

&lt;p&gt;Alternately, it would be possible for the remote MDTs to fetch (and cache under XATTR lock) the default layout from the filesystem root directory. This would be practical if using &lt;tt&gt;[FID_SEQ_ROOT:FID_OID_ROOT:0]&lt;/tt&gt;, but that isn&apos;t used for old filesystems, and would need to be special-cased in the OSP-&amp;gt;OUT-&amp;gt;OSD path (maybe by MDT0 having an alias in the OI for the root?) since there are no &quot;MDT-level&quot; RPCs between MDSes anymore AFAIK, so a simple MDS_GETATTR(root FID) wouldn&apos;t be possible.&lt;/p&gt;

&lt;p&gt;Di, Alex, any thoughts on how best to implement this?&lt;/p&gt;</comment>
                            <comment id="139092" author="di.wang" created="Fri, 15 Jan 2016 23:13:36 +0000"  >&lt;p&gt;As you suggested, there are two options, IMHO&lt;/p&gt;

&lt;p&gt;1. either spreading the default stripe information by config log, i.e. in ll_dir_setstrip(), client will add (or modify) these config parameters in all MDT&apos;s config log, instead of only adding it to MDT0.&lt;/p&gt;

&lt;p&gt;2. or spreading the default stripe information by root inode on MDT0, i.e. each MDT will hold the xattr lock of the root inode, once we change these default stripe, other MDT will be notified by lock callback. So when each MDT get the connection request from MDT0, it will enqueue the xattr lock and get these attributes by XATTR_GET(), and release the lock during cleanup.&lt;/p&gt;

&lt;p&gt;Personally, I prefer 1, because all of these mechanism are already there, and it also make senses to me to store these default stripe information in the config log.&lt;/p&gt;


</comment>
                            <comment id="139120" author="bzzz" created="Sat, 16 Jan 2016 06:55:05 +0000"  >&lt;p&gt;I remember we were planning to get rid of configuration in the format of llog commands. plus storing per-fs defaults isn&apos;t really different from per-directory one?&lt;/p&gt;</comment>
                            <comment id="139124" author="di.wang" created="Sat, 16 Jan 2016 08:03:26 +0000"  >&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;plus storing per-fs defaults isn&apos;t really different from per-directory one?
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Not sure I follow here. I thought spreading per-fs defaults is definitely different as inheriting directory default?  probably miss your points?&lt;/p&gt;</comment>
                            <comment id="139125" author="bzzz" created="Sat, 16 Jan 2016 08:15:29 +0000"  >&lt;p&gt;why is it different? it&apos;s just an additional optional storage. kind of similar would be to inherit layout from the parent&apos;s parent..&lt;/p&gt;</comment>
                            <comment id="139126" author="di.wang" created="Sat, 16 Jan 2016 08:27:29 +0000"  >&lt;p&gt;you mean inherit fs-default layout on each directory creation? why would we do that?&lt;/p&gt;</comment>
                            <comment id="139143" author="bzzz" created="Sun, 17 Jan 2016 18:26:46 +0000"  >&lt;p&gt;I mean that having two different mechanism to store essentially same information doesn&apos;t really help. we check one FID to take defaults, just add another FID (predefined) ? the approach with LDLM and regular storage looks great to me. the same way we could store/cache other things (like FLDB).&lt;/p&gt;
</comment>
                            <comment id="139145" author="di.wang" created="Mon, 18 Jan 2016 00:58:28 +0000"  >&lt;p&gt;I am not sure what you mean two different mechanisms here?  TBH, I do not see any problem to regard default FS striping as the configuration of the filesystem, that said I do not see the problem to spread this by config log.  Plus this will only need a few lines of changes. i.e. add config records for all MDTs in ll_dir_setstripe(). &lt;/p&gt;

&lt;p&gt;The concern I have for extending such changes by the ldlm lock of a special FID on MDT0 is that it would make MDT0 more unique, which might be a problem when we want FS to be functional without MDT0. Though I do not hold my strong opinion here.&lt;/p&gt;</comment>
                            <comment id="140951" author="niu" created="Wed, 3 Feb 2016 07:27:40 +0000"  >&lt;p&gt;I vote for the second method (set default striping in root inode, and let slave MDTs to fetch it on-demand), since I think config log isn&apos;t a perfect place to store a composite layout template and treating root inode setting as fs-wide setting looks natural to me.&lt;/p&gt;</comment>
                            <comment id="140955" author="adilger" created="Wed, 3 Feb 2016 09:43:45 +0000"  >&lt;p&gt;Ideally, the fetching of the default layout xattr from the root directory can be handled (mostly?) transparently via LOD, and the only real change that is needed is for the other MDTs to know the root FID of the filesystem.  Ideally, this would be handled by replicating the root directory (and the default layout xattr) to all MDTs so that it can be load balanced and MDT0000 is not a single point of failure, essentially a form of DNE2 striped directory that is instead (or in addition) mirrored.  However, I expect that may be too much work to fix this problem.  In the short term, it seems that the only information needed is the root directory FID, and sufficient handling in the LOD/OSP layers (DLM locking and xattr caching in particular) that will allow the MDT to fetch this xattr from MDT0000.&lt;/p&gt;</comment>
                            <comment id="146313" author="gerrit" created="Mon, 21 Mar 2016 14:18:55 +0000"  >&lt;p&gt;Lai Siyao (lai.siyao@intel.com) uploaded a new patch: &lt;a href=&quot;http://review.whamcloud.com/19041&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/19041&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-7660&quot; title=&quot;FS default striping settings only honored on MDT 0&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-7660&quot;&gt;&lt;del&gt;LU-7660&lt;/del&gt;&lt;/a&gt; dne: support fs default stripe&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: 1&lt;br/&gt;
Commit: aeda66065b36048147c969aac4b53cb28dfaf1f4&lt;/p&gt;</comment>
                            <comment id="152604" author="adilger" created="Tue, 17 May 2016 18:52:46 +0000"  >&lt;p&gt;Lai, can you please also file a new LU ticket about caching the xattrs in osd-ldiskfs.  It would be useful to do a before/after mdtest to see if this is needed or not.&lt;/p&gt;</comment>
                            <comment id="152631" author="laisiyao" created="Wed, 18 May 2016 03:16:44 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.whamcloud.com/browse/LU-8159&quot; title=&quot;cache xattr in ldiskfs OSD&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-8159&quot;&gt;&lt;del&gt;LU-8159&lt;/del&gt;&lt;/a&gt; has been created for it.&lt;/p&gt;</comment>
                            <comment id="158421" author="gerrit" created="Mon, 11 Jul 2016 23:55:30 +0000"  >&lt;p&gt;Oleg Drokin (oleg.drokin@intel.com) merged in patch &lt;a href=&quot;http://review.whamcloud.com/19041/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/19041/&lt;/a&gt;&lt;br/&gt;
Subject: &lt;a href=&quot;https://jira.whamcloud.com/browse/LU-7660&quot; title=&quot;FS default striping settings only honored on MDT 0&quot; class=&quot;issue-link&quot; data-issue-key=&quot;LU-7660&quot;&gt;&lt;del&gt;LU-7660&lt;/del&gt;&lt;/a&gt; dne: support fs default stripe&lt;br/&gt;
Project: fs/lustre-release&lt;br/&gt;
Branch: master&lt;br/&gt;
Current Patch Set: &lt;br/&gt;
Commit: 226fd401f9d8bfcd1a71bf264d9baef1e0842441&lt;/p&gt;</comment>
                            <comment id="158664" author="jgmitter" created="Wed, 13 Jul 2016 18:12:38 +0000"  >&lt;p&gt;Patch has landed to master for 2.9.0&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10010">
                    <name>Duplicate</name>
                                                                <inwardlinks description="is duplicated by">
                                        <issuelink>
            <issuekey id="37539">LU-8264</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10322">
                    <name>Gantt End to Start</name>
                                            <outwardlinks description="has to be done before">
                                        <issuelink>
            <issuekey id="36995">LU-8159</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                                        </outwardlinks>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="36540">LU-8092</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="34095">LU-7661</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="38513">LU-8454</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="26753">LU-5676</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="34953">LU-7813</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="40200">LU-8653</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="32798">LU-7335</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|hzxy3b:</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>