<!-- 
RSS generated by JIRA (9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c) at Sat Feb 10 01:19:20 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-1747] osd_xattr_del() in osd-zfs returns -ENOENT when deleting nonexistent &quot;system.posix_acl_access&quot;</title>
                <link>https://jira.whamcloud.com/browse/LU-1747</link>
                <project id="10000" key="LU">Lustre</project>
                    <description>&lt;p&gt;This leads to &quot;cp -p&quot; failures when copying files without ACLs.  For example, sanity 103 may fail at &quot;&lt;span class=&quot;error&quot;&gt;&amp;#91;22&amp;#93;&lt;/span&gt;&quot;.  Deleting a nonexistent attribute, at least if it is &quot;system.posix_acl_access&quot;, should succeed.  That&apos;s also what ext4_xattr_acl_access_handler does.&lt;/p&gt;</description>
                <environment></environment>
        <key id="15490">LU-1747</key>
            <summary>osd_xattr_del() in osd-zfs returns -ENOENT when deleting nonexistent &quot;system.posix_acl_access&quot;</summary>
                <type id="1" iconUrl="https://jira.whamcloud.com/secure/viewavatar?size=xsmall&amp;avatarId=11303&amp;avatarType=issuetype">Bug</type>
                                            <priority id="1" iconUrl="https://jira.whamcloud.com/images/icons/priorities/blocker.svg">Blocker</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="mdiep">Minh Diep</assignee>
                                    <reporter username="liwei">Li Wei</reporter>
                        <labels>
                    </labels>
                <created>Wed, 15 Aug 2012 01:53:29 +0000</created>
                <updated>Wed, 19 Sep 2012 02:10:12 +0000</updated>
                            <resolved>Tue, 18 Sep 2012 11:46:39 +0000</resolved>
                                    <version>Lustre 2.4.0</version>
                                    <fixVersion>Lustre 2.4.0</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                            <comments>
                            <comment id="43236" author="bzzz" created="Wed, 15 Aug 2012 01:55:42 +0000"  >&lt;p&gt;I&apos;d rather think the caller should expect -ENOENT as a valid return.&lt;/p&gt;</comment>
                            <comment id="43629" author="adilger" created="Wed, 22 Aug 2012 12:05:21 +0000"  >&lt;p&gt;Assign to Minh for landing on master.&lt;/p&gt;</comment>
                            <comment id="43630" author="adilger" created="Wed, 22 Aug 2012 12:19:46 +0000"  >&lt;p&gt;Looking at the ldiskfs code for the current semantics:&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;/*
 * ext4_xattr_set_handle()
 *
 * Create, replace or remove an extended attribute &lt;span class=&quot;code-keyword&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; inode.  Value
 * is NULL to remove an existing extended attribute, and non-NULL to
 * either replace an existing extended attribute, or create a &lt;span class=&quot;code-keyword&quot;&gt;new&lt;/span&gt; extended
 * attribute. The flags XATTR_REPLACE and XATTR_CREATE
 * specify that an extended attribute must exist and must not exist
 * previous to the call, respectively.
 *
 * Returns 0, or a negative error number on failure.
 */
&lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt;     
ext4_xattr_set_handle(handle_t *handle, struct inode *inode, &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; name_index,
                      &lt;span class=&quot;code-keyword&quot;&gt;const&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;char&lt;/span&gt; *name, &lt;span class=&quot;code-keyword&quot;&gt;const&lt;/span&gt; void *value, size_t value_len,
                      &lt;span class=&quot;code-object&quot;&gt;int&lt;/span&gt; flags)
{       
        error = ext4_xattr_ibody_find(inode, &amp;amp;i, &amp;amp;is);
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (error)
                &lt;span class=&quot;code-keyword&quot;&gt;goto&lt;/span&gt; cleanup;
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (is.s.not_found)
                error = ext4_xattr_block_find(inode, &amp;amp;i, &amp;amp;bs);
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (error)
                &lt;span class=&quot;code-keyword&quot;&gt;goto&lt;/span&gt; cleanup;
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (is.s.not_found &amp;amp;&amp;amp; bs.s.not_found) {
                error = -ENODATA;
                &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (flags &amp;amp; XATTR_REPLACE)
                        &lt;span class=&quot;code-keyword&quot;&gt;goto&lt;/span&gt; cleanup;
                error = 0;
                &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (!value)
                        &lt;span class=&quot;code-keyword&quot;&gt;goto&lt;/span&gt; cleanup;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So only if &lt;tt&gt;XATTR_REPLACE&lt;/tt&gt; is set does the deletion of a non-existent entry cause &lt;tt&gt;-ENODATA&lt;/tt&gt; to be returned.  We can&apos;t even pass &lt;tt&gt;XATTR_REPLACE&lt;/tt&gt; to the MDS for xattr deletion, nor is it possible with the VFS &lt;tt&gt;&amp;#45;&amp;gt;removexattr()&lt;/tt&gt; method, so we may as well keep this semantic of not returning an error when deleting a non-existent xattr in the ZFS OSD layer as well.&lt;/p&gt;</comment>
                            <comment id="43631" author="adilger" created="Wed, 22 Aug 2012 12:21:35 +0000"  >&lt;p&gt;This is a blocker for ZFS functionality on 2.4.  It isn&apos;t strictly required for 2.3, since we don&apos;t support ZFS MDTs with 2.3.&lt;/p&gt;</comment>
                            <comment id="44025" author="mdiep" created="Fri, 31 Aug 2012 00:38:37 +0000"  >&lt;p&gt;patch for master &lt;a href=&quot;http://review.whamcloud.com/#change,3833&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://review.whamcloud.com/#change,3833&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="45141" author="mdiep" created="Tue, 18 Sep 2012 11:46:39 +0000"  >&lt;p&gt;landed on master&lt;/p&gt;</comment>
                            <comment id="45143" author="bzzz" created="Tue, 18 Sep 2012 11:48:46 +0000"  >&lt;p&gt;I&apos;d like to hear opinions.. shouldn&apos;t MDD ignore such an error instead? &lt;/p&gt;</comment>
                            <comment id="45178" author="liwei" created="Tue, 18 Sep 2012 21:05:05 +0000"  >&lt;p&gt;Alex,&lt;/p&gt;

&lt;p&gt;osd-ldiskfs does not return an error when deleting a nonexistent &quot;system.posix_acl_access&quot; EA.  Since that is not easy to change, osd-zfs shall do the same.  Then, one concern is if osd-zfs should do the same for &lt;em&gt;all&lt;/em&gt; EAs or just ACL ones.  I think so far it looks &quot;for all&quot; is fine.  If that ever becomes an issue, we can add EA name checks to osd-zfs.&lt;/p&gt;</comment>
                            <comment id="45199" author="adilger" created="Wed, 19 Sep 2012 02:02:32 +0000"  >&lt;p&gt;I was going to write the same as Li Wei. Since ldiskfs already hides this error, I have little motivation to patch the code just to discard the error at the MDD layer. &lt;/p&gt;</comment>
                            <comment id="45201" author="bzzz" created="Wed, 19 Sep 2012 02:10:12 +0000"  >&lt;p&gt;ok, i&apos;m fine with this then.&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|hzv5l3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10090" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4439</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>
                                                                                                                                                    <customfield id="customfield_10002" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Story Points</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>