[Gluster-devel] regarding special treatment of ENOTSUP for setxattr

Kaleb KEITHLEY kkeithle at redhat.com
Tue May 13 14:31:53 UTC 2014


On 05/13/2014 08:00 AM, Nagaprasad Sathyanarayana wrote:
> On 05/07/2014 03:44 PM, Pranith Kumar Karampuri wrote:
>>
>> ----- Original Message -----
>>> From: "Raghavendra Gowdappa" <rgowdapp at redhat.com>
>>> To: "Pranith Kumar Karampuri" <pkarampu at redhat.com>
>>> Cc: "Vijay Bellur" <vbellur at redhat.com>, gluster-devel at gluster.org,
>>> "Anand Avati" <aavati at redhat.com>
>>> Sent: Wednesday, May 7, 2014 3:42:16 PM
>>> Subject: Re: [Gluster-devel] regarding special treatment of ENOTSUP
>>> for setxattr
>>>
>>> I think with "repetitive log message suppression" patch being merged, we
>>> don't really need gf_log_occasionally (except if they are logged in
>>> DEBUG or
>>> TRACE levels).
>> That definitely helps. But still, setxattr calls are not supposed to
>> fail with ENOTSUP on FS where we support gluster. If there are special
>> keys which fail with ENOTSUPP, we can conditionally log setxattr
>> failures only when the key is something new?

I know this is about EOPNOTSUPP (a.k.a. ENOTSUPP) returned by 
setxattr(2) for legitimate attrs.

But I can't help but wondering if this isn't related to other bugs we've 
had with, e.g., lgetxattr(2) called on invalid xattrs?

E.g. see https://bugzilla.redhat.com/show_bug.cgi?id=765202. We have a 
hack where xlators communicate with each other by getting (and setting?) 
invalid xattrs; the posix xlator has logic to filter out  invalid 
xattrs, but due to bugs this hasn't always worked perfectly.

It would be interesting to know which xattrs are getting errors and on 
which fs types.

FWIW, in a quick perusal of a fairly recent (3.14.3) kernel, in xfs 
there are only six places where EOPNOTSUPP is returned, none of them 
related to xattrs. In ext[34] EOPNOTSUPP can be returned if the 
user_xattr option is not enabled (enabled by default in ext4.) And in 
the higher level vfs xattr code there are many places where EOPNOTSUPP 
_might_ be returned, primarily only if subordinate function calls aren't 
invoked which would clear the default or return a different error.

--

Kaleb








More information about the Gluster-devel mailing list