<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:21:54 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-2045] clean up inherited default striping in LOD</title>
                <link>https://jira.whamcloud.com/browse/LU-2045</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;Per discussion in &lt;a href=&quot;http://review.whamcloud.com/4054&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/4054&lt;/a&gt;, it would be desirable to clean up the handling for inherited/default striping in the LOD code:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Is this default striping written to disk for new directories, or just cached in memory? &lt;/p&gt;

&lt;p&gt;Directories without an explicit default striping should get their striping from the current filesystem default values.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;To which Alex replied:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I just checked on a live filesystem that if (LOVEA_DELETE_VALUES()) RETURN(0); in lod_store_def_striping() works to do like you said: do not write fs-wide default striping.&lt;/p&gt;

&lt;p&gt;I think that non-existing LOVEA is equal to LOVEA storing &quot;current default fs striping&quot;. and it&apos;s OK to set it to every directory unless the parent has own one? then in lod_store_def_striping() we just skip actual storing.&lt;/p&gt;

&lt;p&gt;lod_cache_parent_striping():&lt;/p&gt;

&lt;p&gt;if (rc &amp;lt; sizeof(struct lov_user_md)) {&lt;br/&gt;
/* don&apos;t lookup for non-existing or invalid striping */&lt;br/&gt;
lp-&amp;gt;ldo_def_striping_set = 0;&lt;br/&gt;
lp-&amp;gt;ldo_striping_cached = 1;&lt;br/&gt;
lp-&amp;gt;ldo_def_stripe_size = 0;&lt;br/&gt;
lp-&amp;gt;ldo_def_stripenr = 0;&lt;br/&gt;
lp-&amp;gt;ldo_def_stripe_offset = (typeof(v1-&amp;gt;lmm_stripe_offset))(-1);&lt;br/&gt;
GOTO(unlock, rc = 0);&lt;/p&gt;

&lt;p&gt;IOW, the object will be storing an indirect pointer to fs-wide default striping, not some actual one.&lt;/p&gt;

&lt;p&gt;currently memory footprint is the same all the time. though I&apos;d agree we could save on this and allocate additional memory for directories with non-default striping only.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;This bug is to track the outstanding cleanup.&lt;/p&gt;
</description>
                <environment></environment>
        <key id="16172">LU-2045</key>
            <summary>clean up inherited default striping in LOD</summary>
                <type id="7" iconUrl="https://jira.whamcloud.com/images/icons/issuetypes/task_agile.png">Technical task</type>
                            <parent id="13933">LU-1303</parent>
                                    <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="bzzz">Alex Zhuravlev</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                    </labels>
                <created>Fri, 28 Sep 2012 14:23:54 +0000</created>
                <updated>Thu, 17 Jan 2013 03:19:16 +0000</updated>
                            <resolved>Thu, 17 Jan 2013 03:19:16 +0000</resolved>
                                    <version>Lustre 2.4.0</version>
                                                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                            <comments>
                            <comment id="49632" author="bzzz" created="Mon, 24 Dec 2012 01:02:15 +0000"  >&lt;p&gt;Andreas, let&apos;s refresh this a bit.. what specifically you&apos;d like to improve: reduce memory footprint? or rework the code to improve readability ?&lt;/p&gt;
</comment>
                            <comment id="49649" author="adilger" created="Mon, 24 Dec 2012 12:18:51 +0000"  >&lt;p&gt;To be honest, I don&apos;t recall how I wanted this to be cleaned up. For now, I&apos;d be happy to get some clear comments where the &quot;default&quot; layout is stored on the directory that this will not be saved to disk in whatever function saves it, and again in that function indicating that default layouts are not saved to disk. &lt;/p&gt;</comment>
                            <comment id="49650" author="bzzz" created="Mon, 24 Dec 2012 12:31:44 +0000"  >&lt;p&gt;OK, so during directory creation the rough sequence will be:&lt;/p&gt;

&lt;p&gt;lod_ah_init()&lt;br/&gt;
   lod_cache_parent_striping()&lt;br/&gt;
      	/* don&apos;t lookup for non-existing or invalid striping */&lt;br/&gt;
	lp-&amp;gt;ldo_def_striping_set = 0;&lt;br/&gt;
	lp-&amp;gt;ldo_striping_cached = 1;&lt;br/&gt;
	lp-&amp;gt;ldo_def_stripe_size = 0;&lt;br/&gt;
	lp-&amp;gt;ldo_def_stripenr = 0;&lt;br/&gt;
	lp-&amp;gt;ldo_def_stripe_offset = (typeof(v1-&amp;gt;lmm_stripe_offset))(-1);&lt;br/&gt;
	GOTO(unlock, rc = 0);&lt;/p&gt;

&lt;p&gt;lod_object_create()&lt;br/&gt;
    if (S_ISDIR(dt-&amp;gt;do_lu.lo_header-&amp;gt;loh_attr))&lt;br/&gt;
        lod_store_def_striping(env, dt, th);&lt;br/&gt;
            	if (LOVEA_DELETE_VALUES(lo-&amp;gt;ldo_def_stripe_size, lo-&amp;gt;ldo_def_stripenr,&lt;br/&gt;
				lo-&amp;gt;ldo_def_stripe_offset))&lt;br/&gt;
		RETURN(0);&lt;/p&gt;

&lt;p&gt;where&lt;br/&gt;
#define LOVEA_DELETE_VALUES(size, count, offset) (size == 0 &amp;amp;&amp;amp; count == 0 &amp;amp;&amp;amp; \&lt;br/&gt;
                                                 offset == (typeof(offset))(-1))&lt;/p&gt;

&lt;p&gt;so, all directory objects will be getting &lt;/p&gt;
{0, 0, -1}
&lt;p&gt; striping in struct lod_object,&lt;br/&gt;
but then objects with this striping will be ignored in the function which actually&lt;br/&gt;
store LOV EA.&lt;/p&gt;

&lt;p&gt;I can not argue this is the best approach and wouldn&apos;t mind options.&lt;/p&gt;</comment>
                            <comment id="50641" author="bzzz" created="Thu, 17 Jan 2013 03:19:16 +0000"  >&lt;p&gt;I think the last comment should have this explained. if anyone would like to keep this open or still have questions, please feel free to re-open.&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|hzv4fz:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4253</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>