<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 03:19:01 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-15520] OST object projid and quota reset</title>
                <link>https://jira.whamcloud.com/browse/LU-15520</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;There needs to be a mechanism to reset the project IDs on the OST objects if they become inconsistent with the project ID on the MDT inodes.  In some rare cases they can be different (in particular projid=0 on the OST objects, even though they have data).  This can lead to inconsistencies between &quot;&lt;tt&gt;du -sk &amp;lt;dir&amp;gt;&lt;/tt&gt;&quot; and &quot;&lt;tt&gt;lfs quota -p &amp;lt;projid&amp;gt; &amp;lt;dir&amp;gt;&lt;/tt&gt;&quot; that are not corrected by running &quot;&lt;tt&gt;e2fsck&lt;/tt&gt;&quot; or &quot;&lt;tt&gt;tune2fs&lt;/tt&gt;&quot; or &quot;&lt;tt&gt;lfs project -cr &amp;lt;dir&amp;gt;&lt;/tt&gt;&quot;.&lt;/p&gt;

&lt;p&gt;The &quot;&lt;tt&gt;lfs project -cr &amp;lt;dir&amp;gt;&lt;/tt&gt;&quot; command will only verify the projid on the MDT inode matches the parent directory, but it doesn&apos;t verify the projid on the OST objects also matches.  In most cases, that is the correct behavior, since the MDT and OST projids should be in sync and checking every OST object can increase the RPC count by an order of magnitude.&lt;/p&gt;

&lt;p&gt;Running &quot;&lt;tt&gt;lfs project -r -p 0 &amp;lt;dir&amp;gt;; lfs project -r -p &amp;lt;projid&amp;gt; &amp;lt;dir&amp;gt;&lt;/tt&gt;&quot; will reset the projid of every file, but this has the drawback that the project quota of the affected directory tree will be totally inaccurate for the whole time that this process is running (maybe hours), and affects objects that may have the correct projid already.&lt;/p&gt;

&lt;p&gt;One option is to add an option like &quot;&lt;tt&gt;lfs project -r -p &amp;lt;projid&amp;gt; --force-osts &amp;lt;dir&amp;gt;&lt;/tt&gt;&quot;, that also sends an RPC to all of the OSTs to update their project ID, even if the MDT projid matches.  While this will still send an RPC for &lt;b&gt;every&lt;/b&gt; object in the directory tree, it doesn&apos;t have to &lt;em&gt;modify&lt;/em&gt; the OST objects if the projid matches already.  That would avoid a potentially large number of OST disk IOPS (double if the &quot;&lt;tt&gt;-p 0; -p &amp;lt;projid&amp;gt;&lt;/tt&gt;&quot; method is used).&lt;/p&gt;

&lt;p&gt;It would also seem relatively easy to have OST write RPCs with &lt;tt&gt;obdo.o_projid&lt;/tt&gt; that have a non-zero value to update OST objects that have &lt;tt&gt;projid==0&lt;/tt&gt;.  This would be the same one-shot mechanism to set the projid for OST objects as is done with UID/GID on first write.  This depends on the clients consistently setting &lt;tt&gt;o_projid&lt;/tt&gt; with the bulk write and setattr RPCs, and the OST to check this, but it can be done without interoperability concerns, especially since the &lt;tt&gt;o_projid&lt;/tt&gt; would always relate to the &lt;b&gt;inode&lt;/b&gt; and not to the &lt;b&gt;process&lt;/b&gt; that is accessing the file.&lt;/p&gt;

&lt;p&gt;It would also be useful if LFSCK would verify the MDT inode UID/GID/PROJID match those on on OST objects of a file, and update them if different.&lt;/p&gt;</description>
                <environment></environment>
        <key id="68488">LU-15520</key>
            <summary>OST object projid and quota reset</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="wc-triage">WC Triage</assignee>
                                    <reporter username="adilger">Andreas Dilger</reporter>
                        <labels>
                            <label>medium</label>
                    </labels>
                <created>Thu, 3 Feb 2022 23:27:20 +0000</created>
                <updated>Fri, 22 Sep 2023 23:27:55 +0000</updated>
                                            <version>Lustre 2.15.0</version>
                                                        <due></due>
                            <votes>1</votes>
                                    <watches>6</watches>
                                                                                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Related</name>
                                            <outwardlinks description="is related to ">
                                        <issuelink>
            <issuekey id="77175">LU-16988</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="is related to">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                            <subtask id="72938">LU-16265</subtask>
                            <subtask id="72939">LU-16266</subtask>
                            <subtask id="77175">LU-16988</subtask>
                    </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|i02h93:</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>