NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Propose to link fuse-encfs against pkg libperfuse [Was Re: mmap errors related to using encfs]
Things are seeming very fuzzy to me and we need clarity before we can
agree to change anything.
First, I should be clear that we are only talking about how to use the
high-level FUSE API. The low-level API and /dev/fuse are only available
via libfuse/perfuse and perfuse, respectively. So no one has ever
suggested, nor made it work, to use a filesystem that uses the low-level
or kernel API on NetBSD, other than via perfuse. Indeed, that's why
manu@ wrote perfuse. I am only aware of glusterfs which is in this
category (but that's very important).
Some comments:
I don't know what "pkg fuse" means. If you mean
pkgsrc/filesystems/fuse, then it doesn't make sense to use librefuse,
as filesystems/fuse is the standard implementation of the FUSE API,
and expects to talk to /dev/fuse. I am calling this libfuse as that
is what is installed by that package.
You talk about fuse-* "linking with". But, the way we do things is to
include mk/fuse.buildlink3.mk. And the way those work is that we have
logic to select defaults and variables to list which options are
acceptable to the package and which are preferred to the user. I see
no reason to depart from our practices in this area. Perhaps that's
what you mean.
Some people prefer librefuse because it does not involve a daemon and
has fewer data copies. It is meant as an compatible implementation of
the high-level API. Some people prefer libfuse/perfuse because of a
belief in greater compatibility. It is clear that we do not have
consensus and that this is a situation where preferences differ
depending on how one gives weight to various issues (which is ok).
In dealing with mk/fuse.buildlink3.mk, there are two separable issues.
One is, on NetBSD, choosing to use librefuse (/usr/include/fuse.h and
a faked-up pc), vs the fuse package. This does not appear to be
implemented and I think most would think that adding it is reasonable.
The second is changing the default away from librefuse. Comments have
been mixed, and I think that should not happen soon, at the very least
because this new way doesn't exist yet in pkgsrc and thus does not
have wide experience.
You asserted or at least implies that encfs mmap does not work when
linked with librefuse but does with libfuse/perfuse. But that (that
it works on NetBSD with libfuse/perfuse) sounds like news, not
something I've seen on the list, and we lack an analysis of what is
missing and why. It could be useful to add mmap to librefuse, or at
least to clarify some documentation.
It is normal to have a bl3 for a package and to select the base system
version if adequate and present, and the package if not. That already
exists for filesystems/perfuse. So we talk about depending on the
perfuse package or not, with the understanding that this may resolve
to an actual package or to the base system. pkgsrc/filesystems/fuse
does link against perfuse and everything about this seems correct.
There is very little clarity about multiple FUSE API versions and the
extent to which both libfuse and librefuse do or don't support this,
and what various fuse-foo programs do. To make progress, someone is
going to have to actually analyze this by reading header files and
documentation. (It seems obvious that librefuse should have at least
the level of compat that FUSE does.)
Related, I've been hearing about the FUSE 3.0 API, but fuse in pkgsrc
is at 2.9.3. It appears to have API level 26.
So open questions requiring careful and precise analysis are:
What's going on with mmap on NetBSD with FUSE, in both the
libfuse/perfuse case, and the librefuse case?
What is the situation with (upstream) libfuse API versions?
How do librefuse versions related to libfuse versions?
What is the situation with various filesystems in terms of which API
version they use? What does upstream libfuse say about this?
Some notes:
If I flip fuse-encfs's Makefile to use filesystems/fuse instead of
fuse.buildlink3.mk, it builds, and works. But git fails with a
complaint about mmap.
Home |
Main Index |
Thread Index |
Old Index