Comments (9)
Thanks for the patch and report! Could you explain what exactly the patch does? What does it mean to add @FUSE_UNVERSIONED
to the various symbols (pointers to documentation are also happily accepted)?
from libfuse.
As far as I understand (I'm not an expert in the area, though I understand some things) the patch versions all the "unversioned" symbols with "FUSE_UNVERSIONED" version.
Then, in the versionscript nothing special is done for those symbols, leaving them the default when no particular version is required.
I understood this is to workaround a bug in the glibc implementation (see all the bugs I linked, I recall it's written somewhere).
I think the closest thing you can call documentation are this bug:
And this post from flameeyes:
Let me know if I can be of further help.
from libfuse.
I am tempted to simply version all symbols in the upcoming (backwards incompatible) libfuse3 release and leave this issue unfixed in fuse 2.x. Do you see any problem with that?
from libfuse.
The only issue I see is with the adoption times of libfuse3.
There are a plethora of fuse-based filesystems that depend on the stable fuse 2.9 API, which has been around for at least 3 years (not counting that probably most of the API didn't change at all throughout 2.x versions, but I didn't check).
Most of these filesystems are distributed by distros, and I guess most of the binary ones are already shipping the patch in some form in order to compile fuse properly if they are using the gold linker. Since libfuse3 would be a backwards incompatible change, it might make sense to merge the patch upstream until libfuse3 gets wider adoption and fuse 2.x gets phased out, it's a little less maintainership for distros in the end. :-)
That said, I'm usually pro API-breaks, because they force people to upgrade and avoid "lets keep version 0.0.1 API around just in case" scenarios.
Your pick. ;-)
from libfuse.
My only worry is that the patch may have side effects that I don't foresee. But if it's widely used that wouldn't be a concern and I'd be happy to apply it. But what distributions are using the Gold linker? I'm only aware if it being an option for Gentoo and Arch (which doesn't exactly qualify as "widely used").
from libfuse.
Fedora seems to have a project for it, not sure about the current status (currently it seems not implemented):
This seems to be a Debian project similar to the Fedora one (still, seems unimplemented):
I couldn't find any other projects for "big" distros.
I'm not pushing on either side, as I don't have knowledge to make an informed decision. Maybe we can leave this open for a while. In the meantime I can ping the bug on the Gentoo bugtracker (as that's my distro of choice) and see what happens.
from libfuse.
Could you maybe provide a pull request for the master branch?
from libfuse.
According to https://bugs.gentoo.org/show_bug.cgi?id=402967#c20 this issue has now been fixed in the Gold linker instead - but it may still make sense to version all symbols.
from libfuse.
I just looked into this, and FUSE 3 already versions all exported symbols.
from libfuse.
Related Issues (20)
- hello_ll example crashes on getxattr() for directory HOT 1
- passthrough_hp: xfstests generic/477 triggers AddressSanitizer: heap-buffer-overflow HOT 2
- Skip permission check of directory for decreasing invocation of getattr ? HOT 1
- Will fuse mount file system content visible in s3 bucket?.
- Enable use of an existing fuse connection HOT 5
- Makefile or meson ? HOT 1
- Question about inode invalidation when FUSE_CAP_WRITEBACK_CACHE is enabled HOT 3
- Support "create" request extensions
- centos7 build lubfuse 3.13.0 eriir HOT 1
- Add support for kernel flag FUSE_HAS_EXPIRE_ONLY
- Does fuse/cuse support simulate mmap behavior like v4l2 device?
- How does libfuse ensure that fuse init will be processed first?
- commit c9905341ea34 ("Pass FUSE_PARALLEL_DIROPS to kernel (#861)") breaks backward comatibility HOT 5
- test/test_write_cache.c has test issues
- random failures of example/notify_inval_inode.c: HOT 1
- FUSE_CAP_HANDLE_KILLPRIV setting is missing when init HOT 10
- 3.16.2: test suite fails HOT 4
- Bind mounts of stale FUSE file systems remain despite auto_unmount HOT 8
- After PR 892 building libfuse fails with `error: unknown type name 'loff_t'; did you mean 'off_t'?` HOT 4
- example/poll.c triggers "Invalid read of size 4" HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from libfuse.