[GH-ISSUE #848] xattr "Function not implemented" with use_xattr on 1.84 #494

Closed
opened 2026-03-04 01:46:06 +03:00 by kerem · 1 comment
Owner

Originally created by @snatella on GitHub (Oct 29, 2018).
Original GitHub issue: https://github.com/s3fs-fuse/s3fs-fuse/issues/848

Version of s3fs being used (s3fs --version)

Just compiled from master

Amazon Simple Storage Service File System V1.84(commit:e8d76a6) with OpenSSL

Or

Amazon Simple Storage Service File System V1.84(commit:unknown) with OpenSSL

From EPEL (s3fs-fuse-1.84-2.el7.x86_64)

Version of fuse being used (pkg-config --modversion fuse, rpm -qi fuse, dpkg -s fuse)

Name        : fuse
Version     : 2.9.2
Release     : 10.el7
Architecture: x86_64
Install Date: Mon 29 Oct 2018 01:51:57 PM UTC
Group       : System Environment/Base
Size        : 223041
License     : GPL+
Signature   : RSA/SHA256, Wed 25 Apr 2018 11:00:05 AM UTC, Key ID 24c6a8a7f4a80eb5
Source RPM  : fuse-2.9.2-10.el7.src.rpm
Build Date  : Wed 11 Apr 2018 05:12:48 AM UTC
Build Host  : x86-01.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : https://github.com/libfuse/libfuse
Summary     : File System in Userspace (FUSE) utilities
Description :
With FUSE it is possible to implement a fully functional filesystem in a
userspace program. This package contains the FUSE userspace tools to
mount a FUSE filesystem.

Kernel information (uname -r)

3.10.0-862.3.2.el7.x86_64

GNU/Linux Distribution, if applicable (cat /etc/os-release)

# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
etc

Fully up to date.

s3fs command line used, if applicable

s3fs mybucket -f -d /mnt/bucket/ -o allow_other,use_xattr,iam_role=auto,use_path_request_style,endpoint=eu-west-1,url=http://s3.eu-west-1.amazonaws.com/

Used for debugging

/etc/fstab entry, if applicable

mybucket /mnt/bucket/ fuse.s3fs _netdev,allow_other,use_xattr,nodev,nosuid,iam_role=auto,use_path_request_style,endpoint=eu-west-1,url=http://s3.eu-west-1.amazonaws.com/,use_cache=/var/lib/s3fs/,complement_stat,check_cache_dir_exist,del_cache 0 0

s3fs syslog messages (grep s3fs /var/log/syslog, journalctl | grep s3fs, or s3fs outputs)

[root@example.com]# ls -lh /mnt/bucket/test
[INF] s3fs.cpp:s3fs_getattr(843): [path=/test]
[INF] s3fs.cpp:s3fs_getxattr(3121): [path=/test][name=security.capability][value=(nil)][size=0]
[INF] s3fs.cpp:s3fs_getxattr(3121): [path=/test][name=system.posix_acl_access][value=(nil)][size=0]
[INF] s3fs.cpp:s3fs_getxattr(3121): [path=/test][name=system.posix_acl_default][value=(nil)][size=0]
-rw-r--r--. 1 root root 0 Oct 29 14:35 /mnt/bucket/test
[root@example.com]# lsattr /mnt/bucket/test
[INF] s3fs.cpp:s3fs_getattr(843): [path=/test]
[INF] s3fs.cpp:s3fs_open(2065): [path=/test][flags=34816]
[INF]       cache.cpp:DelStat(565): delete stat cache entry[path=/test]
[INF]       curl.cpp:HeadRequest(2716): [tpath=/test]
[INF]       curl.cpp:PreHeadRequest(2665): [tpath=/test][bpath=][save=][sseckeypos=-1]
[INF]       curl.cpp:prepare_url(4265): URL is http://s3.eu-west-1.amazonaws.com/mybucket/test
[INF]       curl.cpp:prepare_url(4297): URL changed is http://s3.eu-west-1.amazonaws.com/mybucket/test
[INF]       curl.cpp:insertV4Headers(2408): computing signature [HEAD] [/test] [] []
[INF]       curl.cpp:url_to_host(101): url is http://s3.eu-west-1.amazonaws.com
[INF]       curl.cpp:RequestPerform(2062): HTTP response code 200
[INF]       cache.cpp:AddStat(356): add stat cache entry[path=/test]
[INF]       fdcache.cpp:SetMtime(1026): [path=/test][fd=5][time=1540823722]
[INF] s3fs.cpp:s3fs_flush(2187): [path=/test][fd=5]
[INF]       fdcache.cpp:RowFlush(1441): [tpath=][path=/test][fd=5]
lsattr: Function not implemented While reading flags on /mnt/bucket/test
[INF] s3fs.cpp:s3fs_release(2240): [path=/test][fd=5]
[INF]       fdcache.cpp:GetFdEntity(2020): [path=/test][fd=5]
[root@example.com]# chattr +i /mnt/bucket/test
[INF] s3fs.cpp:s3fs_getattr(843): [path=/test]
[INF] s3fs.cpp:s3fs_open(2065): [path=/test][flags=34816]
[INF]       cache.cpp:DelStat(565): delete stat cache entry[path=/test]
[INF]       curl.cpp:HeadRequest(2716): [tpath=/test]
[INF]       curl.cpp:PreHeadRequest(2665): [tpath=/test][bpath=][save=][sseckeypos=-1]
[INF]       curl.cpp:prepare_url(4265): URL is http://s3.eu-west-1.amazonaws.com/mybucket/test
[INF]       curl.cpp:prepare_url(4297): URL changed is http://s3.eu-west-1.amazonaws.com/mybucket/test
[INF]       curl.cpp:insertV4Headers(2408): computing signature [HEAD] [/test] [] []
[INF]       curl.cpp:url_to_host(101): url is http://s3.eu-west-1.amazonaws.com
[INF]       curl.cpp:RequestPerform(2062): HTTP response code 200
[INF]       cache.cpp:AddStat(356): add stat cache entry[path=/test]
[INF]       fdcache.cpp:SetMtime(1026): [path=/test][fd=10][time=1540823722]
[INF] s3fs.cpp:s3fs_flush(2187): [path=/test][fd=10]
[INF]       fdcache.cpp:RowFlush(1441): [tpath=][path=/test][fd=10]
chattr: Function not implemented while reading flags on /mnt/bucket/test
[root@example.com]# [INF] s3fs.cpp:s3fs_release(2240): [path=/test][fd=10]
[INF]       fdcache.cpp:GetFdEntity(2020): [path=/test][fd=10]

Details about issue

I just can't get extended attributes to work with use_xattr. lsattr, chattr, rsync -aX all fail with some variety of "Function not implemented". I've looked through the Issues around implementing them (#460 #467 #471) and done some research, but I just get stuck with the same error.

I've used both the packaged EPEL s3fs-fuse and compiled from master, both have the same result.

The bucket filesystem works otherwise, I can add, update and remove files, change permissions, users etc. Just no xattr.

I've used the simpler s3fs command I provided above to make trying to get it work easier but I get the same error with either the fstab line or the s3fs (command) line.

# lsattr /mnt/bucket/test
lsattr: Function not implemented While reading flags on /mnt/bucket/test
# chattr +i /mnt/bucket/test
chattr: Function not implemented while reading flags on /mnt/bucket/test
# rsync -aX test /mnt/bucket/test
rsync: rsync_xal_set: lsetxattr(""/mnt/bucket/.test.GmyuLm"","security.selinux") failed: Operation not supported (95)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]

selinux itself is set to permissive for debugging so should not be an issue.

Edit: Apologies for confusing file attributes and extended attributes - not something I've really delved into before, but the above errors suggest neither work.

Many thanks

Originally created by @snatella on GitHub (Oct 29, 2018). Original GitHub issue: https://github.com/s3fs-fuse/s3fs-fuse/issues/848 #### Version of s3fs being used (s3fs --version) Just compiled from master ``` Amazon Simple Storage Service File System V1.84(commit:e8d76a6) with OpenSSL ``` Or ``` Amazon Simple Storage Service File System V1.84(commit:unknown) with OpenSSL ``` From EPEL (s3fs-fuse-1.84-2.el7.x86_64) #### Version of fuse being used (pkg-config --modversion fuse, rpm -qi fuse, dpkg -s fuse) ```rpm -qi fuse Name : fuse Version : 2.9.2 Release : 10.el7 Architecture: x86_64 Install Date: Mon 29 Oct 2018 01:51:57 PM UTC Group : System Environment/Base Size : 223041 License : GPL+ Signature : RSA/SHA256, Wed 25 Apr 2018 11:00:05 AM UTC, Key ID 24c6a8a7f4a80eb5 Source RPM : fuse-2.9.2-10.el7.src.rpm Build Date : Wed 11 Apr 2018 05:12:48 AM UTC Build Host : x86-01.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : https://github.com/libfuse/libfuse Summary : File System in Userspace (FUSE) utilities Description : With FUSE it is possible to implement a fully functional filesystem in a userspace program. This package contains the FUSE userspace tools to mount a FUSE filesystem. ``` #### Kernel information (uname -r) `3.10.0-862.3.2.el7.x86_64` #### GNU/Linux Distribution, if applicable (cat /etc/os-release) ``` # cat /etc/os-release NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" etc ``` Fully up to date. #### s3fs command line used, if applicable ``` s3fs mybucket -f -d /mnt/bucket/ -o allow_other,use_xattr,iam_role=auto,use_path_request_style,endpoint=eu-west-1,url=http://s3.eu-west-1.amazonaws.com/ ``` Used for debugging #### /etc/fstab entry, if applicable ``` mybucket /mnt/bucket/ fuse.s3fs _netdev,allow_other,use_xattr,nodev,nosuid,iam_role=auto,use_path_request_style,endpoint=eu-west-1,url=http://s3.eu-west-1.amazonaws.com/,use_cache=/var/lib/s3fs/,complement_stat,check_cache_dir_exist,del_cache 0 0 ``` #### s3fs syslog messages (grep s3fs /var/log/syslog, journalctl | grep s3fs, or s3fs outputs) ``` [root@example.com]# ls -lh /mnt/bucket/test [INF] s3fs.cpp:s3fs_getattr(843): [path=/test] [INF] s3fs.cpp:s3fs_getxattr(3121): [path=/test][name=security.capability][value=(nil)][size=0] [INF] s3fs.cpp:s3fs_getxattr(3121): [path=/test][name=system.posix_acl_access][value=(nil)][size=0] [INF] s3fs.cpp:s3fs_getxattr(3121): [path=/test][name=system.posix_acl_default][value=(nil)][size=0] -rw-r--r--. 1 root root 0 Oct 29 14:35 /mnt/bucket/test [root@example.com]# lsattr /mnt/bucket/test [INF] s3fs.cpp:s3fs_getattr(843): [path=/test] [INF] s3fs.cpp:s3fs_open(2065): [path=/test][flags=34816] [INF] cache.cpp:DelStat(565): delete stat cache entry[path=/test] [INF] curl.cpp:HeadRequest(2716): [tpath=/test] [INF] curl.cpp:PreHeadRequest(2665): [tpath=/test][bpath=][save=][sseckeypos=-1] [INF] curl.cpp:prepare_url(4265): URL is http://s3.eu-west-1.amazonaws.com/mybucket/test [INF] curl.cpp:prepare_url(4297): URL changed is http://s3.eu-west-1.amazonaws.com/mybucket/test [INF] curl.cpp:insertV4Headers(2408): computing signature [HEAD] [/test] [] [] [INF] curl.cpp:url_to_host(101): url is http://s3.eu-west-1.amazonaws.com [INF] curl.cpp:RequestPerform(2062): HTTP response code 200 [INF] cache.cpp:AddStat(356): add stat cache entry[path=/test] [INF] fdcache.cpp:SetMtime(1026): [path=/test][fd=5][time=1540823722] [INF] s3fs.cpp:s3fs_flush(2187): [path=/test][fd=5] [INF] fdcache.cpp:RowFlush(1441): [tpath=][path=/test][fd=5] lsattr: Function not implemented While reading flags on /mnt/bucket/test [INF] s3fs.cpp:s3fs_release(2240): [path=/test][fd=5] [INF] fdcache.cpp:GetFdEntity(2020): [path=/test][fd=5] [root@example.com]# chattr +i /mnt/bucket/test [INF] s3fs.cpp:s3fs_getattr(843): [path=/test] [INF] s3fs.cpp:s3fs_open(2065): [path=/test][flags=34816] [INF] cache.cpp:DelStat(565): delete stat cache entry[path=/test] [INF] curl.cpp:HeadRequest(2716): [tpath=/test] [INF] curl.cpp:PreHeadRequest(2665): [tpath=/test][bpath=][save=][sseckeypos=-1] [INF] curl.cpp:prepare_url(4265): URL is http://s3.eu-west-1.amazonaws.com/mybucket/test [INF] curl.cpp:prepare_url(4297): URL changed is http://s3.eu-west-1.amazonaws.com/mybucket/test [INF] curl.cpp:insertV4Headers(2408): computing signature [HEAD] [/test] [] [] [INF] curl.cpp:url_to_host(101): url is http://s3.eu-west-1.amazonaws.com [INF] curl.cpp:RequestPerform(2062): HTTP response code 200 [INF] cache.cpp:AddStat(356): add stat cache entry[path=/test] [INF] fdcache.cpp:SetMtime(1026): [path=/test][fd=10][time=1540823722] [INF] s3fs.cpp:s3fs_flush(2187): [path=/test][fd=10] [INF] fdcache.cpp:RowFlush(1441): [tpath=][path=/test][fd=10] chattr: Function not implemented while reading flags on /mnt/bucket/test [root@example.com]# [INF] s3fs.cpp:s3fs_release(2240): [path=/test][fd=10] [INF] fdcache.cpp:GetFdEntity(2020): [path=/test][fd=10] ``` ### Details about issue I just can't get extended attributes to work with `use_xattr`. lsattr, chattr, rsync -aX all fail with some variety of "Function not implemented". I've looked through the Issues around implementing them (#460 #467 #471) and done some research, but I just get stuck with the same error. I've used both the packaged EPEL `s3fs-fuse` and compiled from master, both have the same result. The bucket filesystem works otherwise, I can add, update and remove files, change permissions, users etc. Just no xattr. I've used the simpler s3fs command I provided above to make trying to get it work easier but I get the same error with either the fstab line or the s3fs (command) line. ``` # lsattr /mnt/bucket/test lsattr: Function not implemented While reading flags on /mnt/bucket/test # chattr +i /mnt/bucket/test chattr: Function not implemented while reading flags on /mnt/bucket/test # rsync -aX test /mnt/bucket/test rsync: rsync_xal_set: lsetxattr(""/mnt/bucket/.test.GmyuLm"","security.selinux") failed: Operation not supported (95) rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2] ``` selinux itself is set to permissive for debugging so should not be an issue. Edit: Apologies for confusing file attributes and extended attributes - not something I've really delved into before, but the above errors suggest neither work. Many thanks
kerem closed this issue 2026-03-04 01:46:06 +03:00
Author
Owner

@ggtakec commented on GitHub (Nov 11, 2018):

@snatella I'm sorry for my late reply.

This Issue seems to depend on fuse. I think fuse does not support lsattr / chattr.
Please see the comments below.
https://bugzilla.redhat.com/show_bug.cgi?id=762410

<!-- gh-comment-id:437641726 --> @ggtakec commented on GitHub (Nov 11, 2018): @snatella I'm sorry for my late reply. This Issue seems to depend on fuse. I think fuse does not support lsattr / chattr. Please see the comments below. https://bugzilla.redhat.com/show_bug.cgi?id=762410
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/s3fs-fuse#494
No description provided.