The NetBSD Project

CVS log for src/lib/librefuse/fuse.h

[BACK] Up to [cvs.NetBSD.org] / src / lib / librefuse

Request diff between arbitrary revisions


Default branch: MAIN
Current tag: MAIN


Revision 1.35 / (download) - annotate - [select for diffs], Fri Apr 21 19:29:31 2023 UTC (11 months, 4 weeks ago) by abs
Branch: MAIN
CVS Tags: HEAD
Changes since 1.34: +2 -2 lines
Diff to previous 1.34 (unified)

Fix incorrect test for FUSE_USE_VERSION 34

(Thanks to Mark Davies for report)

Revision 1.34 / (download) - annotate - [select for diffs], Sat Jan 22 08:09:39 2022 UTC (2 years, 2 months ago) by pho
Branch: MAIN
CVS Tags: netbsd-10-base
Branch point for: netbsd-10
Changes since 1.33: +483 -77 lines
Diff to previous 1.33 (unified)

lib/librefuse: Implement all sorts of compat tweaks to appease various file systems

ReFUSE now supports all the FUSE API variants from FUSE 1.1 to FUSE
3.10. Sorry for the freaking giant patch. I could not break it down
any further.

Revision 1.33 / (download) - annotate - [select for diffs], Sat Jan 22 08:06:21 2022 UTC (2 years, 2 months ago) by pho
Branch: MAIN
Changes since 1.32: +94 -12 lines
Diff to previous 1.32 (unified)

Add some missing struct fields, structs, and constants that are part of the API

Revision 1.32 / (download) - annotate - [select for diffs], Sat Jan 22 08:03:32 2022 UTC (2 years, 2 months ago) by pho
Branch: MAIN
Changes since 1.31: +31 -4 lines
Diff to previous 1.31 (unified)

Implement some missing functions that are part of the API

Revision 1.31 / (download) - annotate - [select for diffs], Sat Jan 22 08:02:49 2022 UTC (2 years, 2 months ago) by pho
Branch: MAIN
Changes since 1.30: +10 -3 lines
Diff to previous 1.30 (unified)

Correct the wrong prototype of fuse_daemonize(3) while retaining ABI compatibility

Revision 1.30 / (download) - annotate - [select for diffs], Sat Jan 22 08:01:50 2022 UTC (2 years, 2 months ago) by pho
Branch: MAIN
Changes since 1.29: +2 -3 lines
Diff to previous 1.29 (unified)

Cosmetic changes

Revision 1.29 / (download) - annotate - [select for diffs], Sat Jan 22 08:01:12 2022 UTC (2 years, 2 months ago) by pho
Branch: MAIN
Changes since 1.28: +37 -9 lines
Diff to previous 1.28 (unified)

Change the way how FUSE_*_VERSION are handled

* FUSE_MAKE_VERSION(maj, min) now generates a 3-digits number if the
  version is higher than 3.9. This is needed to support FUSE 3.10 API.

* FUSE_{MAJOR,MINOR}_VERSION no longer have a fixed value but are
  derived from FUSE_USE_VERSION specified by the user code. This is
  needed to support more FUSE filesystems in the wild.

Revision 1.28 / (download) - annotate - [select for diffs], Sat Jan 22 07:57:30 2022 UTC (2 years, 2 months ago) by pho
Branch: MAIN
Changes since 1.27: +4 -2 lines
Diff to previous 1.27 (unified)

lib/librefuse: Add support for legacy types and functions

Revision 1.27 / (download) - annotate - [select for diffs], Sat Jan 22 07:56:16 2022 UTC (2 years, 2 months ago) by pho
Branch: MAIN
Changes since 1.26: +2 -1 lines
Diff to previous 1.26 (unified)

lib/librefuse: Add stub functions for FUSE polling API

Revision 1.26 / (download) - annotate - [select for diffs], Sat Jan 22 07:54:57 2022 UTC (2 years, 2 months ago) by pho
Branch: MAIN
Changes since 1.25: +2 -1 lines
Diff to previous 1.25 (unified)

lib/librefuse: Implement data buffer API appeared on FUSE 2.9

Revision 1.25 / (download) - annotate - [select for diffs], Sat Jan 22 07:53:06 2022 UTC (2 years, 2 months ago) by pho
Branch: MAIN
Changes since 1.24: +5 -3 lines
Diff to previous 1.24 (unified)

lib/librefuse: Implement FUSE session API and its signal handling functionality

Revision 1.24 / (download) - annotate - [select for diffs], Sat Dec 4 06:42:39 2021 UTC (2 years, 4 months ago) by pho
Branch: MAIN
Changes since 1.23: +22 -12 lines
Diff to previous 1.23 (unified)

librefuse: Preparation of a proper API versioning; no more #ifdef woes in user code

The goal is to fully support FUSE API version 3.0 while maintaining
API/ABI compatibility with code written for 2.6 (or even older).

* <fuse.h> now emits a compiler warning if it's included without
  defining FUSE_USE_VERSION. It had been silently defaulted to the
  latest supported version prior to this change. This is permissive
  compared to the original FUSE, as it emits an error instead.

* <fuse.h> now emits a warning if FUSE_USE_VERSION is higher than what
  can be provided.

* Added a macro FUSE_MAKE_VERSION(maj, min). It was missing from
  librefuse <fuse.h>.

No actual API updates have been made (yet).

Revision 1.23 / (download) - annotate - [select for diffs], Wed Apr 10 21:38:02 2019 UTC (5 years ago) by maya
Branch: MAIN
CVS Tags: phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, phil-wifi-20191119, phil-wifi-20190609, netbsd-9-base, netbsd-9-3-RELEASE, netbsd-9-2-RELEASE, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2, netbsd-9-0-RC1, netbsd-9, is-mlppp-base, is-mlppp, cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x
Changes since 1.22: +2 -1 lines
Diff to previous 1.22 (unified)

provide fuse_version

Revision 1.22 / (download) - annotate - [select for diffs], Sun Nov 20 13:28:32 2016 UTC (7 years, 4 months ago) by pho
Branch: MAIN
CVS Tags: prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, phil-wifi-base, pgoyette-localcount-20170426, pgoyette-localcount-20170320, pgoyette-localcount-20170107, pgoyette-compat-merge-20190127, pgoyette-compat-base, pgoyette-compat-20190127, pgoyette-compat-20190118, pgoyette-compat-1226, pgoyette-compat-1126, pgoyette-compat-1020, pgoyette-compat-0930, pgoyette-compat-0906, pgoyette-compat-0728, pgoyette-compat-0625, pgoyette-compat-0521, pgoyette-compat-0502, pgoyette-compat-0422, pgoyette-compat-0415, pgoyette-compat-0407, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315, pgoyette-compat, perseant-stdc-iso10646-base, perseant-stdc-iso10646, netbsd-8-base, netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, netbsd-8, matt-nb8-mediatek-base, matt-nb8-mediatek, bouyer-socketcan-base1, bouyer-socketcan-base, bouyer-socketcan
Branch point for: phil-wifi
Changes since 1.21: +9 -15 lines
Diff to previous 1.21 (unified)

fuse_main(3): Support general fuse options via fuse_parse_cmdline(3)

* Prototypes for fuse_new(3), fuse_mount(3), and fuse_unmount(3) now
  matches to the original fuse interface.

* Add fuse_daemonize(3): needs to have a different prototype,
  otherwise we can't use puffs_daemon(3).

* Remove fuse_setup(3) and fuse_teardown(3). These obsolete functions
  has already been removed from the original interface.

* fuse_main(3) now supports the following command-line options
  compatible with the original fuse:

  -h, --help      print help message
  -V, --version   print library version (currently does nothing)
  -d, -o debug    enable debug output (PUFFS_FLAG_OPDUMP), implies -f
  -f              foreground mode
  -s              single threaded mode (always enabled for now)
  -o fsname=NAME  explicitly set the name of the file system

* fuse_main(3) now daemonizes the process by default. This is for the
  compatibility with the original fuse.

Revision 1.21 / (download) - annotate - [select for diffs], Fri Aug 1 15:54:09 2008 UTC (15 years, 8 months ago) by dillo
Branch: MAIN
CVS Tags: yamt-pagecache-tag8, yamt-pagecache-base9, yamt-pagecache-base8, yamt-pagecache-base7, yamt-pagecache-base6, yamt-pagecache-base5, yamt-pagecache-base4, yamt-pagecache-base3, yamt-pagecache-base2, yamt-pagecache-base, yamt-pagecache, wrstuden-revivesa-base-3, wrstuden-revivesa-base-2, tls-maxphys-base, tls-maxphys, tls-earlyentropy-base, tls-earlyentropy, riastradh-xf86-video-intel-2-7-1-pre-2-21-15, riastradh-drm2-base3, riastradh-drm2-base2, riastradh-drm2-base1, riastradh-drm2-base, riastradh-drm2, pgoyette-localcount-base, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, netbsd-7-nhusb-base-20170116, netbsd-7-nhusb-base, netbsd-7-nhusb, netbsd-7-base, netbsd-7-2-RELEASE, netbsd-7-1-RELEASE, netbsd-7-1-RC2, netbsd-7-1-RC1, netbsd-7-1-2-RELEASE, netbsd-7-1-1-RELEASE, netbsd-7-1, netbsd-7-0-RELEASE, netbsd-7-0-RC3, netbsd-7-0-RC2, netbsd-7-0-RC1, netbsd-7-0-2-RELEASE, netbsd-7-0-1-RELEASE, netbsd-7-0, netbsd-7, netbsd-6-base, netbsd-6-1-RELEASE, netbsd-6-1-RC4, netbsd-6-1-RC3, netbsd-6-1-RC2, netbsd-6-1-RC1, netbsd-6-1-5-RELEASE, netbsd-6-1-4-RELEASE, netbsd-6-1-3-RELEASE, netbsd-6-1-2-RELEASE, netbsd-6-1-1-RELEASE, netbsd-6-1, netbsd-6-0-RELEASE, netbsd-6-0-RC2, netbsd-6-0-RC1, netbsd-6-0-6-RELEASE, netbsd-6-0-5-RELEASE, netbsd-6-0-4-RELEASE, netbsd-6-0-3-RELEASE, netbsd-6-0-2-RELEASE, netbsd-6-0-1-RELEASE, netbsd-6-0, netbsd-6, netbsd-5-base, netbsd-5-2-RELEASE, netbsd-5-2-RC1, netbsd-5-2-3-RELEASE, netbsd-5-2-2-RELEASE, netbsd-5-2-1-RELEASE, netbsd-5-2, netbsd-5-1-RELEASE, netbsd-5-1-RC4, netbsd-5-1-RC3, netbsd-5-1-RC2, netbsd-5-1-RC1, netbsd-5-1-5-RELEASE, netbsd-5-1-4-RELEASE, netbsd-5-1-3-RELEASE, netbsd-5-1-2-RELEASE, netbsd-5-1-1-RELEASE, netbsd-5-1, netbsd-5-0-RELEASE, netbsd-5-0-RC4, netbsd-5-0-RC3, netbsd-5-0-RC2, netbsd-5-0-RC1, netbsd-5-0-2-RELEASE, netbsd-5-0-1-RELEASE, netbsd-5-0, netbsd-5, matt-premerge-20091211, matt-nb6-plus-nbase, matt-nb6-plus-base, matt-nb6-plus, matt-nb5-pq3-base, matt-nb5-pq3, matt-nb5-mips64-u2-k2-k4-k7-k8-k9, matt-nb5-mips64-u1-k1-k5, matt-nb5-mips64-premerge-20101231, matt-nb5-mips64-premerge-20091211, matt-nb5-mips64-k15, matt-nb5-mips64, matt-nb4-mips64-k7-u2a-k9b, matt-mips64-premerge-20101231, matt-mips64-base2, localcount-20160914, jym-xensuspend-nbase, jym-xensuspend-base, jym-xensuspend, cherry-xenmp-base, cherry-xenmp, bouyer-quota2-nbase, bouyer-quota2-base, bouyer-quota2, agc-symver-base, agc-symver
Branch point for: pgoyette-localcount
Changes since 1.20: +5 -1 lines
Diff to previous 1.20 (unified)

Add API version 2.6 variant of fuse_setup.

Reviewed by agc.

Revision 1.20 / (download) - annotate - [select for diffs], Mon Jan 14 20:46:11 2008 UTC (16 years, 3 months ago) by pooka
Branch: MAIN
CVS Tags: yamt-pf42-baseX, yamt-pf42-base4, yamt-pf42-base3, yamt-pf42-base2, yamt-pf42-base, yamt-pf42, wrstuden-revivesa-base-1, wrstuden-revivesa-base, matt-armv6-nbase, keiichi-mipv6-base, keiichi-mipv6, hpcarm-cleanup-nbase, hpcarm-cleanup-base
Branch point for: wrstuden-revivesa
Changes since 1.19: +1 -2 lines
Diff to previous 1.19 (unified)

Remove puffs_ops from fuse_operations, no reason for it to be there.

Revision 1.19 / (download) - annotate - [select for diffs], Thu May 17 01:55:43 2007 UTC (16 years, 11 months ago) by christos
Branch: MAIN
CVS Tags: matt-mips64-base, matt-mips64, matt-armv6-prevmlocking, matt-armv6-base, hpcarm-cleanup, cube-autoconf-base, cube-autoconf
Branch point for: matt-armv6
Changes since 1.18: +1 -4 lines
Diff to previous 1.18 (unified)

More fixes:
- make sure that the args array is NULL terminated.
- make sure argc is initialized and argv is set to NULL after freeing.
- make the deep copy function an opt interface function.

Revision 1.18 / (download) - annotate - [select for diffs], Wed May 16 22:17:52 2007 UTC (16 years, 11 months ago) by xtraeme
Branch: MAIN
Changes since 1.17: +2 -0 lines
Diff to previous 1.17 (unified)

Add the $NetBSD$ tag, it's easier to know what revision you have.

Revision 1.17 / (download) - annotate - [select for diffs], Wed May 16 21:39:08 2007 UTC (16 years, 11 months ago) by christos
Branch: MAIN
Changes since 1.16: +3 -0 lines
Diff to previous 1.16 (unified)

- Always check strdup return. For now we are lazy and bail instead of cleaning
  up.
- Use malloc and free instead of macros, delete macros.
- Merge the two copies of deep copy and free args that were slightly buggy
  into one and use that one.

XXX: Lots of ints should be size_t.
XXX: Bailing on error is not a good thing for a library.
XXX: Defs.h should be eliminated completely. Not all files need all the headers.

Revision 1.16 / (download) - annotate - [select for diffs], Wed May 16 21:37:18 2007 UTC (16 years, 11 months ago) by agc
Branch: MAIN
Changes since 1.15: +7 -1 lines
Diff to previous 1.15 (unified)

The FUSE_USE_VERSION is the definition which the user sets, and which
determines the API.

Provide a default for FUSE_USE_VERSION if it's not set, and use this
value to determine the number of arguments given to fuse_main().

Revision 1.15 / (download) - annotate - [select for diffs], Tue May 15 22:47:35 2007 UTC (16 years, 11 months ago) by agc
Branch: MAIN
Changes since 1.14: +5 -0 lines
Diff to previous 1.14 (unified)

Fuse version 2.6 (and above) has a 4 argument version of fuse_main(),
whereas previous versions had a 3 argument one. Accept both.

Revision 1.14 / (download) - annotate - [select for diffs], Thu May 3 21:13:25 2007 UTC (16 years, 11 months ago) by agc
Branch: MAIN
Changes since 1.13: +2 -2 lines
Diff to previous 1.13 (unified)

...and include fuse_opt.h in the correct place.

Revision 1.13 / (download) - annotate - [select for diffs], Thu May 3 21:02:54 2007 UTC (16 years, 11 months ago) by agc
Branch: MAIN
Changes since 1.12: +4 -0 lines
Diff to previous 1.12 (unified)

Implement fuse_setup(), and fuse_teardown() - necessary for the python
bindings for refuse.

Revision 1.12 / (download) - annotate - [select for diffs], Thu May 3 20:58:22 2007 UTC (16 years, 11 months ago) by agc
Branch: MAIN
Changes since 1.11: +2 -0 lines
Diff to previous 1.11 (unified)

FUSE includes fuse_opt.h from fuse.h, albeit indirectly, via fuse_common.h.

Refuse doessn't have a fuse_common.h, so include fuse_opt.h explicitly
from fuse.h.  To avoid circular dependencies, don't include fuse.h
from fuse_opt.h.

This means that we no longer have to modify packages which use the argument
and option parsing routines to include fuse_opt.h.

Revision 1.11 / (download) - annotate - [select for diffs], Tue Mar 13 22:47:03 2007 UTC (17 years, 1 month ago) by agc
Branch: MAIN
Changes since 1.10: +2 -6 lines
Diff to previous 1.10 (unified)

Revert the most recent changes I made - they weren't ready for primetime.

Revision 1.10 / (download) - annotate - [select for diffs], Tue Mar 13 20:50:47 2007 UTC (17 years, 1 month ago) by agc
Branch: MAIN
Changes since 1.9: +6 -2 lines
Diff to previous 1.9 (unified)

+ Only use EXIT_SUCCESS and EXIT_FAILURE for the return code to the
shell in the fuse_opt functions

+ add new debugging functions:
	+ __fuse_debug(), which is used to set and retrieve the
	debugging level, so that debugging information can be turned
	on and off from the user-level filesystem, and
	+ __fuse_pargs(), which prints out an argv vector

+ put the comment about pu_privdata back with the code it references

+ put the code to place the refuse name back into the fuse_new()
function - we have access to all the arguments there.

+ specifically include <fuse_opt.h> in <fuse.h> - this would seem to
be what FUSE itself does, judging by the number of fuse-based
filesystems I've patched to include <fuse_opt.h> specifically

+ do away with the forward reference to struct fuse_args in fuse.h,
since it is defined just after the forward reference without being
referenced in between

+ fill in the missing refuse_opt args functionality - add an arg to the
args structure in fuse_opt_add_arg() and fuse_opt_insert_arg(), and
free allocated memory in fuse_opt_free_args().

+ get rid of spurious forward declarations and prototypes.

+ if REFUSE_INHERIT_FS_CHARACTERISTICS is defined when refuse is built,
file systems inherit the vfs characteristics of their mountpoints. The
default value is NOT to inherit the vfs characteristics.

+ perform a deep copy of the fuse_args structure in fuse_mount() -
this is so that existing FUSE filesystems still DTRT when arguments
are zeroed out.

Revision 1.9 / (download) - annotate - [select for diffs], Wed Feb 28 16:23:00 2007 UTC (17 years, 1 month ago) by xtraeme
Branch: MAIN
Changes since 1.8: +0 -24 lines
Diff to previous 1.8 (unified)

* Move fuse_opt* defs and prototypes into fuse_opt.h.
* Move fuse_opt* funcs from refuse.c into refuse_opt.c.

Implement fuse_opt_parse() and fuse_opt_match(). And make the other
functions just dummy, always returning 0 (I added debugging printfs
to see what the application is trying to do).

For now there are two things that do not work in fuse_opt:

	* options accepting arguments, i.e -otimeout=%u or -ofile=%s.
	* options without arguments are not enabled, just parsed.

At least now curlftpfs works, even with verbose mode! :-)

Ok'ed by pooka.

Revision 1.8 / (download) - annotate - [select for diffs], Mon Feb 26 15:57:33 2007 UTC (17 years, 1 month ago) by pooka
Branch: MAIN
Changes since 1.7: +16 -2 lines
Diff to previous 1.7 (unified)

Refactor a few interfaces a bit to look more like fuse.  fuse_args
is implemented as a very dummy version (i.e. totally unimplemented),
so some effort is still needed there.

After this change it is possible to compile and run ntfs-3g.  It
works read/write for ntfs images and shows no faults at least with
superficial testing.  I did not test it against a block device,
only an image.

Thanks to Tracy and Jason for help with the test image.

Revision 1.7 / (download) - annotate - [select for diffs], Mon Feb 26 13:52:16 2007 UTC (17 years, 1 month ago) by pooka
Branch: MAIN
Changes since 1.6: +1 -1 lines
Diff to previous 1.6 (unified)

Implement readdir properly, or at least as close to possible to how
fuse does it: read directory completely into refuse buffers if starting
from read offset 0 and for later calls trickle results from the buffers
to the kernel without consulting the fuse file system.

Revision 1.6 / (download) - annotate - [select for diffs], Mon Feb 19 23:12:29 2007 UTC (17 years, 2 months ago) by pooka
Branch: MAIN
Changes since 1.5: +1 -0 lines
Diff to previous 1.5 (unified)

Implement a very very stubby fuse_unmount(), which does ... nothing.
Pending some puffs changes that are in the queue, this is the best way
currently.

Revision 1.5 / (download) - annotate - [select for diffs], Sun Feb 18 18:47:40 2007 UTC (17 years, 2 months ago) by pooka
Branch: MAIN
Changes since 1.4: +3 -1 lines
Diff to previous 1.4 (unified)

move getdir() location to match layout of real fuse operations

Revision 1.4 / (download) - annotate - [select for diffs], Sun Feb 18 17:44:57 2007 UTC (17 years, 2 months ago) by agc
Branch: MAIN
Changes since 1.3: +6 -1 lines
Diff to previous 1.3 (unified)

Added extra functionality:

	fuse_opt_free_args()

	fuse_exit()

Both from Juan RP - thanks!

Revision 1.3 / (download) - annotate - [select for diffs], Thu Feb 15 10:54:40 2007 UTC (17 years, 2 months ago) by pooka
Branch: MAIN
Changes since 1.2: +10 -0 lines
Diff to previous 1.2 (unified)

Implement a very very hacky fuse_get_context(), needs to be visited once
threading is added (and probably otherwise also).

Revision 1.2 / (download) - annotate - [select for diffs], Sun Feb 11 11:57:41 2007 UTC (17 years, 2 months ago) by pooka
Branch: MAIN
Changes since 1.1: +4 -0 lines
Diff to previous 1.1 (unified)

implement getdir, used by some older fuse file systems instead of readdir

Revision 1.1 / (download) - annotate - [select for diffs], Sun Feb 11 10:31:37 2007 UTC (17 years, 2 months ago) by agc
Branch: MAIN

Add an implementation of the file system in userspace functionality,
based on top of libpuffs.  This version is still barebones and
incomplete, but will benefit from others working on it, rather than
just me.

The option code has still to be implemented, but this gets far enough
to run hellofs (from the fuse web page):

	% priv ./hellofs ~/hellofs/mnt &
	% l ~/hellofs/mnt
	total 2
	drwxr-xr-x  2 root  wheel    0 Jan  1  1970 .
	drwxr-xr-x  4 agc   agc    512 Feb  9 18:05 ..
	-r--r--r--  1 root  wheel   13 Jan  1  1970 hello
	% cat ~/hellofs/mnt/hello
	Hello World!
	% df ~/hellofs/mnt
	Filesystem           1K-blocks      Used     Avail Capacity  Mounted on
	/dev/dk0              28101396  18946682   7749646    70%    /
	kernfs                       1         1         0   100%    /kern
	procfs                       4         4         0   100%    /proc
	ptyfs                        1         1         0   100%    /dev/pts
	puffs:refuse:hellofs  28101396  18946682   7749646    70%    /home/agc/hellofs/mnt
	% mount -v -v
	...
	mount: mount_puffs not found for /home/agc/hellofs/mnt
	puffs:refuse:hellofs on /home/agc/hellofs/mnt type puffs (nosuid, nodev, fsid: 0xcb01/0x6acb, reads: sync 0 async 0, writes: sync 0 async 0)
	%

This code is not enabled by default. Yet.

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>