2015-05-22  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.9.4

2015-05-22  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: fix exec environment for mount and umount.  Found by
	Tavis Ormandy (CVE-2015-3202).

2015-02-26  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: fix fuse_remove_signal_handlers() to properly restore
	the default signal handler.  Reported by: Chris Johnson

2014-07-21  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: highlevel API: fix directory file handle passed to
	ioctl() method.  Reported by Eric Biggers

2014-07-15  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: document deadlock avoidance for
	fuse_notify_inval_entry() and fuse_notify_delete()

	* fusermount, libfuse: send value as unsigned in "user_id=" and
	"group_id=" options.  Uids/gids larger than 2147483647 would
	result in EINVAL when mounting the filesystem.  This also needs a
	fix in the kernel.

2014-03-26  Miklos Szeredi <miklos@szeredi.hu>

	* Initilaize stat buffer passed to ->getattr() and ->fgetattr() to
	zero in all cases.  Reported by Daniel Iwan

2013-08-26  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: Add missing includes.  This allows compiling fuse with
	musl.  Patch by Daniel Thau

2013-07-01  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.9.3

2013-06-20  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: fix multiple close of device fd.  Reported by Dan
	Greenfield

2013-03-19  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: fix thread cancel race.  Exiting a worker my race with
	cancelling that same worker.  This caused a segmenation
	fault. Reported and tested by Anatol Pomozov

2013-02-04  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: fix crash in unlock_path().  Patch by Ratna Manoj

	* libfuse: fix the 'remember' option.  The lru list was not
	initialized for the "/" path.  This resulted in remove_node_lru()
	crashing on LOOKUP-DOTDOT.  Patch by Madan Valluri

	* libfuse: configure: detect new util-linux

	* libfuse: Use AC_CONFIG_HEADERS instead of AM_CONFIG_HEADER.
	Patch by Anatol Pomozov

	* libfuse: rename ./configure.in to ./configure.ac.  Patch by
	Anatol Pomozov

2012-10-01  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.9.2

2012-10-01  Miklos Szeredi <miklos@szeredi.hu>

	* Fix deadlock in libfuse.  Running "svn update" on a fuse
	filesystem could deadlock because of a bug in the way the paths
	are locked.  Reported by Kazuaki Anami

2012-08-23  Miklos Szeredi <miklos@szeredi.hu>

	* Fix missing config.h in buffer.c.  Reported by Matthew Gabeler-Lee

2012-08-14  Miklos Szeredi <miklos@szeredi.hu>

	* Not unhashing the name in forget (commit on 2011-12-09) broke
	the forget logic in a subtle way, resulting in "fuse internal
	error: node NNN not found" and causing the filesystem daemon to
	abort.  Fix by incrementing the node refcount if nlookup goes from
	zero to one.  Reported by Kyle Lippincott

2012-08-13  Miklos Szeredi <miklos@szeredi.hu>

	* Fix linking against GNU libiconv.  Patch by Natanael Copa

2012-07-19  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.9.1

2012-07-19  Miklos Szeredi <miklos@szeredi.hu>

	* Fix crash caused by freeing a stack address.  Reported by Itay
	Perl

2012-07-04  Miklos Szeredi <miklos@szeredi.hu>

	* Fix install of mount.fuse from out-of-tree build.  Patch by
	Olivier Blin

	* Fix build with automake >= 1.12.1.  Patch by Olivier Blin

2012-04-24  Miklos Szeredi <miklos@szeredi.hu>

	* Add fallocate operation.  Only works on linux kernels 3.5 or
	later.  Patch by Anatol Pomozov

2012-05-16  Miklos Szeredi <miklos@szeredi.hu>

	* Linking to a library that uses threads requires the application
	to be linked with -pthreads otherwise some pthread functions will
	be linked to stubs in glibc.  So move -pthread from Libs.private
	to Libs in fuse.pc.  Reported by Werner Fink

	* Fix the compile command in the examples. Reported by Luciano
	Dalle Ore

2012-04-20  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.9.0

2012-04-20  Miklos Szeredi <miklos@szeredi.hu>

	* Add missing fuse_fs_flock to fuse_versionscript

2012-04-10  Miklos Szeredi <miklos@szeredi.hu>

	* Check protocol version before sending notifications and return
	-ENOSYS if a particular notification is not supported.

	* Add 'flag_utime_omit_ok' flag to fuse_operations.  If the
	filesystem sets this flag then ->utimens() will receive UTIME_OMIT
	and UTIME_NOW values as specified in utimensat(2).

2012-01-27  Miklos Szeredi <miklos@szeredi.hu>

	* Interpret octal escape codes in options.  Requested by Jan
	Engelhardt

2012-01-26  Miklos Szeredi <miklos@szeredi.hu>

	* Add man pages for fusermount, mount.fuse and ulockmgr_server.
	Lifted from the Debian package.  The man pages were written by
	Daniel Baumann and Bastien Roucaries

2012-01-13  Miklos Szeredi <miklos@szeredi.hu>

	* Disable symbol versions on MacOSX.  Patch by Anatol Pomozov

2012-01-02  Miklos Szeredi <miklos@szeredi.hu>

	* Remove unnecessary mutex unlock at the end of multithreaded
	event loop.

2011-12-09  Miklos Szeredi <miklos@szeredi.hu>

	* Fix hang in wait_on_path().  Reported by Ville Silventoinen

	* Don't unhash name in FORGET.  This resulted in ENOENT being
	returned for unlinked but still open files if the kernel sent a
	FORGET request for the parent directory.

	* Free request in fuse_reply_data().

2011-12-08  Miklos Szeredi <miklos@szeredi.hu>

	* Fix build if FUSE_NODE_SLAB is not defined.  Patch by Emmanuel
	Dreyfus

	* Check for availability of utimensat() function.  Patch by
	Emmanuel Dreyfus

2011-12-07  Miklos Szeredi <miklos@szeredi.hu>

	* Add fuse_lowlevel_notify_delete() which tells the kernel that a
	file or directory is deleted.  Patch by John Muir

2011-12-06  Miklos Szeredi <miklos@szeredi.hu>

	* Update retrieve_reply() method

2011-12-05  Miklos Szeredi <miklos@szeredi.hu>

	* Low level API: lock argument of fuse_reply_lock should have a
	'const' qualifier.  Reported by Shachar Sharon

	* Add support for ioctl on directories.  Reported by Antonio SJ
	Musumeci

2011-10-13  Miklos Szeredi <miklos@szeredi.hu>

	* Reply to request with ENOMEM in case of failure to allocate
	request structure.  Otherwise the task issuing the request will
	just freeze up until the filesystem daemon is killed.  Reported by
	Stephan Kulow

2011-09-23  Miklos Szeredi <miklos@szeredi.hu>

	* Replace daemon() function with fork().  Patch by Anatol Pomozov

2011-08-26  Miklos Szeredi <miklos@szeredi.hu>

	* If configured with --disable-mtab then don't call mount(8) from
	libfuse to update the mtab.  Reported by: James Sierp

2011-08-24  Miklos Szeredi <miklos@szeredi.hu>

	* Use LRU list for cleaning up the cache if the "remember=T"
	option was given.  Patch by therealneworld@gmail.com

2011-07-06  Miklos Szeredi <miklos@szeredi.hu>

	* Add ->flock() operation to low and high level interfaces.  This
	fixes problems with emulating flock() with POSIX locking.
	Reported by Sebastian Pipping.  As with lock/setlk/getlk most
	filesystems don't need to implement this, as the kernel takes care
	of file locking.  The only reason to implement locking operations
	is for network filesystems which want file locking to work between
	clients.

2011-07-02  Sebastian Pipping <sebastian@pipping.org>

	* Make xmp_utimens of examples "fusexmp" and "fusexmp_fh"
	not follow symlinks as other layers do that already.

2011-06-02  Miklos Szeredi <miklos@szeredi.hu>

	* Add "remember" option.  This works similar to "noforget" except
	that eventually the node will be allowed to expire from the cache.
	Patch by therealneworld@gmail.com

2011-05-27  Miklos Szeredi <miklos@szeredi.hu>

	* Check if splice/vmsplice are supported

2011-05-26  Miklos Szeredi <miklos@szeredi.hu>

	* Remove -lrt -ldl from fuse.pc for dynamic linking since
	libfuse.so is already linked with these libraries.  Reported by:
	Nikolaus Rath

2011-05-20  Miklos Szeredi <miklos@szeredi.hu>

	* Cleaner build output.  Patch by Reuben Hawkins

2011-05-19  Miklos Szeredi <miklos@szeredi.hu>

	* Disable splice by default, add "splice_read", "splice_write" and
	"splice_move" options.  Keep the "no_splice_*" variants, which can
	disable splice even if the filesystem explicitly enables it.

2011-04-15  Max Krasnyansky <maxk@kernel.org>
	* Added support for "auto_unmount" option which unmounts the
	filesystem automatically on process exit (or crash).

2011-03-30  Miklos Szeredi <miklos@szeredi.hu>

	* Patches by Laszlo Papp fixing various issues found by the
	Coverity checker

2011-03-11  Miklos Szeredi <miklos@szeredi.hu>

	* In case of failure to add to /etc/mtab don't umount.  Reported
	by Marc Deslauriers

2011-02-02  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: In fuse_session_loop_mt() don't pause when exiting the
	worker threads.  The pause() was added in 2.2.1 to prevent
	segfault on pthread_cancel() on an exited, detached thread.  Now
	worker threads are not detached and pthread_cancel() should work
	fine even after the thread exited.  Reported by Boris Protopopov

2011-01-31  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: chdir to / before performing mount/umount

	* fusermount: only allow mount and umount if util-linux supports
	--no-canonicalize

2010-12-16  Miklos Szeredi <miklos@szeredi.hu>

	* Highlevel lib: allow hash tables to shrink

	* Highlevel lib: add slab allocation for node cache.  This will
	allow the memory used by the filesystem to grow and shrink
	depending on how many inodes are currently cached.

2010-12-13  Miklos Szeredi <miklos@szeredi.hu>

	* Highlevel lib: use dynamically resized hash table for looking up
	by name and node ID.

2010-12-07  Miklos Szeredi <miklos@szeredi.hu>

	* Allow batching of forget requests.  This allows forget requests
	to be processed faster and doesn't require a modification to fuse
	filesystems.  Reported by Terje Malmedal

	* Add ->forget_multi() operation to the lowlevel API.  The
	filesystem may implement this to process multiple forget requests
	in one call

	* Fix the ambiguity of ioctl ABI on the kernel/userspace boundary
	for 32bit vs. 64bit userspace

2010-11-10  Miklos Szeredi <miklos@szeredi.hu>

	* Add new write_buf() method to the highlevel API.  Similarly to
	the lowlevel write_buf() method, this allows implementing zero
	copy writes.

	* Add a new read_buf() method to the highlevel API.  This allows
	returning a generic buffer from the read method, which in turn
	allows zero copy reads.

	* In fusexmp_fh implement the ->read_buf() and ->write_buf()
	methods.  Leave the ->read() and ->write() implementations for
	reference, even though they are not necessary.

2010-11-08  Miklos Szeredi <miklos@szeredi.hu>

	* Fix check for read-only fs in mtab update

	* Open /dev/null for write instead of read for redirecting stdout
	and stderr

	* If umount(8) supports --fake and --no-canonicalize (util-linux-ng
	version 2.18 or later), and umount(2) supports the
	UMOUNT_NOFOLLOW flag (linux kernel version 2.6.35 or later)  then,
	"fusermount -u" will call the umount(2) system call and use
	"umount --fake ..." to update /etc/mtab

	* Added --disable-legacy-umount option to configure.  This
	disables the runtime checking of umount(8) version.  When built
	with this option then "fusermount -u" will fail if umount(8)
	doesn't support the --fake and --no-canonicalize options.

	* Fix fuse_buf_copy() if already at the end of the buffers

	* Add new ->write_buf() method to low level interface.  This
	allows passig a generic buffer, either containing a memory buffer
	or a file descriptor.  This allows implementing zero copy writes.

	* Add fuse_session_receive_buf() and fuse_session_process_buf()
	which may be used in event loop implementations to replace
	fuse_chan_recv() and fuse_session_process() respectively.

	* Remove unnecessary restoring of current working directory in
	"fusermount -u"

	* Add ctx->pid to debug output

	* Fix st_nlink value in high level lib if file is unlinked but
	still open

	* libfuse: add store request.  Request data to be stored in the
	kernel buffers for a given inode.

	* libfuse: add retrieve request.  Retrieve data stored in the
	kernel buffers for a given inode.

2010-10-14  Miklos Szeredi <miklos@szeredi.hu>

	* Use LTLIBICONV when linking libfuse.  This fixes building against
	uclibc + libiconv.  Patch by Natanael Copa

2010-10-05  Miklos Szeredi <miklos@szeredi.hu>

	* Add missing argument check in ulockmgr.c to prevent calling
	ulockmgr_server with illegal arguments. This would cause an ever
	growing list of ulockmgr_server processes with an endless list of
	open files which finally exceeds the open file handle limit.
	Patch by Markus Ammer

2010-09-28  Miklos Szeredi <miklos@szeredi.hu>

	* Fix ambiguous symbol version for fuse_chan_new.
	fuse_versionscript included fuse_chan_new in both FUSE_2.4 and
	FUSE_2.6.  Remove the FUSE_2.4, which is invalid.

2010-09-28  Miklos Szeredi <miklos@szeredi.hu>

	* Fix option escaping for fusermount.  If the "fsname=" option
	contained a comma then the option parser in fusermount was
	confused (Novell bugzilla #641480).  Fix by escaping commas when
	passing them over to fusermount.  Reported by Jan Engelhardt

2010-08-27  Miklos Szeredi <miklos@szeredi.hu>

	* Add NetBSD support.  Patch from Emmanuel Dreyfus

2010-07-12  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: add buffer interface.  Add a generic buffer interface
	for use with I/O.  Buffer vectors are supplied and each buffer in
	the vector may be a memory pointer or a file descriptor.

	* The fuse_reply_fd() interface is converted to using buffers.

2010-06-23  Miklos Szeredi <miklos@szeredi.hu>

	* Make the number of max background requests and congestion
	threshold tunable.  New options are "max_background" and
	"congestion_threshold".  Only effective on linux kernel versions
	2.6.32 or greater.  Patch by Csaba Henk

2010-06-17  Miklos Szeredi <miklos@szeredi.hu>

	* Add fuse_reply_fd() reply function to the low level interface.
	On linux version 2.6.35 or greater this will use splice() to move
	data directly from a file descriptor to the fuse device without
	needing to go though a userspace buffer.  With the
	FUSE_REPLY_FD_MOVE flag the kernel will attempt to move the data
	directly into the filesystem's cache.  On earlier kernels it will
	fall back to an intermediate buffer.  The options
	"no_splice_write" and "no_splice_move" can be used to disable
	splicing and moving respectively.
 
2010-06-15  Miklos Szeredi <miklos@szeredi.hu>

	* Fix out-of-source build.  Patch by Jörg Faschingbauer

	* Add a "nopath" option and flag, indicating that path argument
	need not be calculated for the following operations: read, write,
	flush, release, fsync, readdir, releasedir, fsyncdir, ftruncate,
	fgetattr, lock, ioctl and poll.

2010-05-10  Miklos Szeredi <miklos@szeredi.hu>

	* Remove "chmod root" from install of fusermount.  Reported by
	Lucas C. Villa Real

2010-04-26  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.8.4

2010-04-26  Miklos Szeredi <miklos@szeredi.hu>

	* Fix checking for symlinks in umount from /tmp.  Reported by Al
	Viro

	* Fix umounting if /tmp is a symlink.  Reported by Franco Broi

2010-02-18  Miklos Szeredi <miklos@szeredi.hu>

	* Fix definition of FUSE_OPT_END for C++.  Reported by Tim
	Bruylants

2010-02-03  Miklos Szeredi <miklos@szeredi.hu>

	* Fix stack alignment for clone()

2010-02-01  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.8.3

2010-02-01  Miklos Szeredi <miklos@szeredi.hu>

	* Using "--no-canonicalize" with umount(8) conflicts with the race
	fix, sinceit assumes the supplied path is absolute, while the race
	fix relies on the path being relative to the current directory.
	Reported by Tom Rindborg

2010-01-26  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.8.2

2010-01-21  Miklos Szeredi <miklos@szeredi.hu>

	* Fix race if two "fusermount -u" instances are run in parallel.
	Reported by Dan Rosenberg

	* Make sure that the path to be unmounted doesn't refer to a
	symlink

2010-01-14  Miklos Szeredi <miklos@szeredi.hu>

	* Fix compile error on FreeBSD.  Patch by Jay Sullivan

2009-12-17  Miklos Szeredi <miklos@szeredi.hu>

	* Use '--no-canonicalize' option of mount(8) (available in
	util-linux-ng version 2.17 or greater) to avoid calling
	readling(2) on the newly mounted filesystem before the mount
	procedure is finished.  This has caused a deadlock if "audit" was
	enabled in the kernel.  Also use '--no-canonicalize' for umount to
	avoid touching the mounted filesystem.

2009-09-11  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.8.1

2009-08-25  Miklos Szeredi <miklos@szeredi.hu>

	* Fix missing versioned symbol fuse_get_context@FUSE_2.2

2009-08-18  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.8.0

2009-08-18  Miklos Szeredi <miklos@szeredi.hu>

	* Add missing fuse_session_data to versionscript

	* Make sure all global symbols are prefixed with "fuse_" or "cuse_"

2009-07-16  Miklos Szeredi <miklos@szeredi.hu>

	* Clarify how the protocol version should be negotiated between
	kernel and userspace.  Notably libfuse didn't correctly handle the
	case when the supported major versions didn't match

	* Add missing pthread link for libulockmgr.  Patch by  Petr Salinger

2009-07-02  Miklos Szeredi <miklos@szeredi.hu>

	* The context is extended with a 'umask' field.  The umask is sent
	for mknod, mkdir and create requests by linux kernel version
	2.6.31 or later, otherwise the umask is set to zero.  Also
	introduce a new feature flag: FUSE_CAP_DONT_MASK.  If the kernel
	supports this feature, then this flag will be set in conn->capable
	in the ->init() method.  If the filesystem sets this flag in in
	conn->want, then the create modes will not be masked.

	* Add low level interfaces for lookup cache and attribute
	invalidation.  This feature is available in linux kernels 2.6.31
	or later.  Patch by John Muir

	* Kernel interface version is now 7.12

	* fusermount: Do not silently ignore command line arguments.
	Patch by Sebastian Harl

2009-06-19  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.8.0-pre3

2009-06-19  Miklos Szeredi <miklos@szeredi.hu>

	* Add fuse_getgroups (high level lib) and fuse_req_getgroups (low
	level lib) functions to query the supplementary group IDs for the
	current request.  Currently this is implemented on Linux by
	reading from the /proc filesystem.

2009-06-18  Miklos Szeredi <miklos@szeredi.hu>

	* Add "noforget" option to high level lib to prevent ESTALE errors
	on NFS exported filesystems.  This result in paths being cached
	forever, resulting in ever growing memory usage.  Use with care.

	* Add "no_remote_lock" option to disable remote file locking even
	if the filesystem implements it.  With this option locking
	primitives (flock, lockf, fcntl(F_SETLK)) will still work, but
	will ignore remotely locked files.

	* CUSE patches from Tejun Heo:

	* Unrestricted ioctl support left some debris.  Clean them up:
	  o No reason to pass around pointer to flags.  Pass flags directly.
	  o Clean up comment and prototype parameter names.
	  o fuse_lib_ioctl() didn't reply when get_path() failed.  Fix it.
	  o Remove unused variables {in|out}_iov from fuse_lib_ioctl().

	* Add fuse_reply_ioctl_iov()

	* Move fuse_session, fuse_req and fuse_ll definitions to fuse_i.h
	and make send_reply_iov() and fuse_setup_common() global (also in
	fuse_i.h).  These will be used by CUSE support.

	* Restructure fuse_ll_process()

	* Implement libfuse side of CUSE support.  CUSE uses subset of FUSE
	operations as dir operations don't make sense for CUSE where one
	instance implements single character device.

	CUSE support comes with its own cuse_lowevel_ops and related
	initialization and helper functions.  Except for initialization, it
	usage is basically identical to FUSE.

	This patch also adds example/cusexmp.c which can create a character
	device with name and device number specified on command line.  The
	created device itself is pretty boring.  It's a bit bucket supporting
	read, write and access via ioctl.

2009-06-16  Miklos Szeredi <miklos@szeredi.hu>

	* Add missing fuse_reply_bmap to versionscript.  Debian
	Bug#531329.  Reported by Goswin Brederlow

2009-05-27  Miklos Szeredi <miklos@szeredi.hu>

	* Don't call forget_node() if the lookup was negative and write()
	for the reply returned ENOENT.  Reported by John Haxby

2009-05-25  Miklos Szeredi <miklos@szeredi.hu>

	* Add FUSE_CAP_EXPORT_SUPPORT to fuse_common.h

2009-05-08  Miklos Szeredi <miklos@szeredi.hu>

	* Fix missing newlines in some printfs

	* Fix 'make install-strip'.  Reported by Dominick Layfield

2009-01-05  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.8.0-pre2

2008-12-08  Miklos Szeredi <miklos@szeredi.hu>

	* Implement poll support.  Patch by Tejun Heo

	* Add missing setattr flags to <fuse_lowlevel.h>.

	* Only pass valid flags to ->setattr().

2008-12-05  Miklos Szeredi <miklos@szeredi.hu>

	* Implement ioctl support.  On high level interface only
	"restricted" ioctls are supported (which are defined with the
	_IO(), _IOR(), _IOW() or _IOWR() macros).  Unrestricted ioctls
	will only be allwed to CUSE (Character Device in Userspace)
	servers.  Patch by Tejun Heo

2008-11-28  Miklos Szeredi <miklos@szeredi.hu>

	* If open sets fi->nonseekable, libfuse will tell the kernel that
	the file is not seekable.  Patch by Tejun Heo

2008-11-19  Miklos Szeredi <miklos@szeredi.hu>

	* lowlevel lib: fix deadlock if fuse_reply_* is called from the
	interrupt handling function.  Reported by Tero Marttila

2008-10-16  Miklos Szeredi <miklos@szeredi.hu>

	* Allow commas in options to be escaped with a backslash

	* Add new function: fuse_opt_add_opt_escaped()

	* Add missing fuse_reply_bmap() to the version script

2008-10-14  Miklos Szeredi <miklos@szeredi.hu>

	* Pass current file flags to read and write operations

2008-07-24  Miklos Szeredi <miklos@szeredi.hu>

	* Clean up debug output in highlevel lib

2008-07-10  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.8.0-pre1

2008-06-27  Miklos Szeredi <miklos@szeredi.hu>

	* Fix handling of (no)suid and (no)dev options if filesystem is
	mounted from /etc/fstab or via mount(8).  Reported by Jan Ondrej.

	* Skip calling mount(8) if /etc/mtab doesn't exist or if it's on a
	read-only filesystem.  This works around issues with certain mount
	implementations.  Reported by Szabolcs Szakacsits.

2008-06-16  Miklos Szeredi <miklos@szeredi.hu>

	* Remove fuse kernel module sources.  Linux 2.6.27 will support
	NFS exporting.

2008-06-10  Miklos Szeredi <miklos@szeredi.hu>

	* Fix theoretical infinite loops in libfuse.  Reported by Szabolcs
	Szakacsits

	* Fix missing <sys/param.h> include for PATH_MAX.  Reported by
	Szabolcs Szakacsits

2008-05-23  Miklos Szeredi <miklos@szeredi.hu>

	* Fix mounting over symlink.  Reported by Szabolcs Szakacsits

2008-05-09  Miklos Szeredi <miklos@szeredi.hu>

	* Don't allow bigger than 4kB writes by default on 2.6.26 and
	later kernels, so that filesystems not expecting this are not
	broken on a kernel upgrade.  Provide a 'big_writes' mount option
	to enable this feature.  In future API revisions this may become
	the default.

2008-04-09  Miklos Szeredi <miklos@szeredi.hu>

	* Update warning message for missing newline at end of fuse.conf

	* Update debug message for successful operation to not include the
	string "error:"

2008-04-08  Miklos Szeredi <miklos@szeredi.hu>

	* Update error message for missing mountpoint parameter.  Reported
	by Allen Pulsifer

2008-04-04  Miklos Szeredi <miklos@szeredi.hu>

	* Print library version information to debug output

	* Highlevel lib: don't limit paths to 4095 characters

2008-03-25  Miklos Szeredi <miklos@szeredi.hu>

	* Fix memory leaks on mount.  Patch by Szabolcs Szakacsits

2008-03-19  Miklos Szeredi <miklos@szeredi.hu>

	* Fix missing pthread_mutex_destroy in error path of
	fuse_lib_opendir().  Patch by Szabolcs Szakacsits

2008-03-07  Miklos Szeredi <miklos@szeredi.hu>

	* Add queuing on contention to per-node lock algorithm, to avoid
	starvation.

	* Only enable cancelation when reading a request, otherwise
	cancellation could happen with a mutex held, which could hang the
	process on umount

2008-02-08  Miklos Szeredi <miklos@szeredi.hu>

	* Block SIGCHLD when executing mount and umount

	* fusexmp_fh: avoid unnecessary seeking in readdir

	* Update kernel interface to 7.9:

	* Support receiving file handle from kernel in GETATTR request

	* Allow operations with a NULL path argument, if the filesystem
	supports it

	* Add support atomic open(O_TRUNC)

	* Support the st_blksize field in struct stat

	* If the "FUSE_THREAD_STACK" environment is set, initialize the
	stack size of threads by this value.  Patch by Florin Malita

	* Add per-node locking, instead of a global tree lock to protect
	the path from changing during operations.  Original patch by
	Rodrigo Castro

2008-02-03  Csaba Henk <csaba.henk@creo.hu>

	* lib/mount_bsd.c:
	- string formatting fixes
	- exit if mounting has failed
	  (in FreeBSD a mount failure is not critical per se, as the daemon
	  still could be mounted externally, but waiting for such an event
	  is more confusing than fruitful)
	- ditch the kvm(8) stuff and simply use forced unmount which just
	  won't block
	- prettify option specifications
	- add "-onosync_unmount" kernel option

2008-01-07  Csaba Henk <csaba.henk@creo.hu>

	* lib/mount_bsd.c:
	- refine device closing in a race-free way
	- add support for "-osubtype" on FreeBSD

	* makeconf.sh: make it work under FreeBSD

2008-01-03  Csaba Henk <csaba.henk@creo.hu>

	* lib/mount_bsd.c: close device before unmount
	(cf. lib/mount.c rev. 1.43) and fix some warnings 

2007-12-23  Miklos Szeredi <miklos@szeredi.hu>

	* Fix './configure --disable-static'.  Patch from Ismail Dönmez

2007-12-17  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.7.2

2007-12-12  Miklos Szeredi <miklos@szeredi.hu>

	* Fix kernel module compile for 2.6.24

	* Invalidate attributes of parent directory after create(), since
	the modification time changes.  Invalidate attributes on rename,
	since some filesystems may update st_ctime.  Reported by Szabolcs
	Szakacsits

	* Fix NFS exporting to handle 64bit node IDs

	* Disable old symbol versions if __UCLIBC__ is defined.  If a
	symbol in a library has multiple versions, the runtime linker in
	uClibc seems to randomly choose between them.

	* Remove erroneous 'fuse_opt_insert_arg@FUSE_2_5' from
	fuse_version_script.  fuse_opt_free_args() was added in fuse-2.6.

	* Close fuse device file descriptor before calling umount(),
	preventing a deadlock when umount is synchronous.  Reported by
	Szabolcs Szakacsits

2007-11-12  Miklos Szeredi <miklos@szeredi.hu>

	* 'fusermount -u' did not umount the filesystem if /etc/mtab was a
	symlink.  This bug was introduced in 2.7.1 by "Don't call
	/bin/[u]mount if /etc/mtab is a symlink".  Found by robertsong.

2007-10-16  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.7.1

2007-10-16  Miklos Szeredi <miklos@szeredi.hu>

	* Clarify licence version to be "LGPLv2" for the library

	* kernel fixes:

	* After mount set nlink attribute for the root inode to 1

	* Fix wake up of task waiting for a reserved request

	* Fix allowing setattr, listxattr and statfs for other users

2007-09-18  Miklos Szeredi <miklos@szeredi.hu>

	* Add missing context initialization in fuse_fs_chmod().  Bug
	found by "iohead"

	* Fix kernel module compilation for 2.6.23.  Based on patch by
	Marian Marinov

2007-09-04  Philippe Elie  <phil.el@wanadoo.fr>

	* lib/fuse_lowlevel.c: fix a fuse_req leak in do_forget()

2007-07-31  Miklos Szeredi <miklos@szeredi.hu>

	* Work around hotplug issue, that it calls filesystem with file
	descriptors 0, 1 and 2 not open.  Tracked down by Leif Johnson

2007-07-25  Miklos Szeredi <miklos@szeredi.hu>

	* Don't call /bin/[u]mount if /etc/mtab is a symlink.  Reported by
	Tomas M

	* Also don't touch /etc/mtab if it is within the mounted
	filesystem.  Suggested by Jeffrey Law

2007-07-12  Miklos Szeredi <miklos@szeredi.hu>

	* Reset args->argc in fuse_opt_free_args().  Patch by Lucas
	C. Villa Real

2007-07-02  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.7.0

2007-07-02  Miklos Szeredi <miklos@szeredi.hu>

	* Accept a NULL "op" for fuse_main(), etc.  This is useful if
	filesystem is only invoking fuse to print a help message, or
	version.  Fixes RedHat bugzilla #217343

2007-06-22  Miklos Szeredi <miklos@szeredi.hu>

	* lib: fix locking when loading a filesystem module

2007-06-21  Miklos Szeredi <miklos@szeredi.hu>

	* Add fs subtype support to mount.fuse

2007-06-20  Miklos Szeredi <miklos@szeredi.hu>

	* Add fs subtype support to libfuse and fusermount

2007-06-19  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: sync with mainline (2.6.22)

2007-06-18  Miklos Szeredi <miklos@szeredi.hu>

	* Send debug output to stderr instead of stdout.  Patch by Jan
	Engelhardt

2007-06-03  Miklos Szeredi <miklos@szeredi.hu>

	* libulockmgr: Work around a kernel bug in recv(), causing it to
	sometimes return zero even if data was available on the socket.

2007-05-29  Miklos Szeredi <miklos@szeredi.hu>

	* lib: optimization: store parent pointer in node instead of
	parent id

2007-05-25  Miklos Szeredi <miklos@szeredi.hu>

	* lib: don't create new thread for each FORGET request.  FORGET
	messages sometimes caused so many threads to be created, that
	process virtual memory space ran out.  Reported by Chris AtLee

2007-05-24  Miklos Szeredi <miklos@szeredi.hu>

	* lib: fix memory leak on thread creation failure in multithreaded
	event loop.  Found by Chris AtLee

2007-05-23  Miklos Szeredi <miklos@szeredi.hu>

	* lowlevel lib: add fuse_reply_iov function, which is similar to
	fuse_reply_buf, but accepts a vector of buffers.  Patch by Roger
	Willcocks

2007-05-21  Miklos Szeredi <miklos@szeredi.hu>

	* Fix Oops or error if a regular file is created with mknod(2) on
	a fuse filesystem.  Kernels 2.6.18 onward are affected.  Thanks to
	J. Cameijo Cerdeira for the report

2007-05-11  Csaba Henk <csaba.henk@creo.hu>

	* libfuse: fix return value of fuse_loop()/fuse_loop_mt().
	Error reported by Csaba Henk, fix by Miklos Szeredi

	* libfuse: fix unlock in flush

	* libfuse: do unlocking on RELEASE+FLUSH
 
2007-05-03  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.7.0-rc1

2007-05-02  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: sync with mainline:

	* Use invalidate_mapping_pages() if available

	* Fix BUG when invalid file type is supplied in mount. Patch by
	Timo Savola

2007-04-27  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: call umount(8) directly instead of fusermount if
	possible

	* Clean up init script, make it LSB compliant

2007-04-26  Miklos Szeredi <miklos@szeredi.hu>

	* In multithreaded loop, use a semaphore instead of SIGHUP to wake
	up the main thread on umount.  This is more elegant, and works
	even if signals are blocked.

2007-04-25  Miklos Szeredi <miklos@szeredi.hu>

	* Improve mounting support in libfuse:
	 - check non-empty mountpoint
	 - only fall back to fusermount when necessary

2007-04-23  Miklos Szeredi <miklos@szeredi.hu>

	* Don't chdir to "/" in foreground mode, it causes more trouble
	than it's worth

2007-04-18  Miklos Szeredi <miklos@szeredi.hu>

	* Replace utils/mount.fuse "sh" script with a "C" program

2007-04-15  Miklos Szeredi <miklos@szeredi.hu>

	* Add -lulockmgr to compilation comment in fusexmp_fh.c

2007-04-05  Miklos Szeredi <miklos@szeredi.hu>

	* Check for iconv.  Patch by Csaba Henk

	* Add direct umounting

	* Use "fusectl" as the device for the fusectl filesystem.  Debian
	Bug#417945.  Reported by Laurent Bonnaud

2007-04-01  Csaba Henk <csaba.henk@creo.hu>

	* Fix some FreeBSD related macros.

2007-03-30  Miklos Szeredi <miklos@szeredi.hu>

	* Add support for direct mounting by libfuse.  Fall back on
	calling fusermount if it doesn't work

2007-03-14  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.7.0-pre1

2007-03-05  Miklos Szeredi <miklos@szeredi.hu>

	* Correctly handle O_APPEND in direct IO mode.  Reported by Greg
	Bruno

	* mount.fuse should use /bin/bash.  Debian Bug#413403.  Reported
	by Thomas Weinbrenner

2007-02-26  Miklos Szeredi <miklos@szeredi.hu>

	* Fix detection of installed fuse in init script.  Reported and
	fix suggested by Davide Canova

2007-02-05  Miklos Szeredi <miklos@szeredi.hu>

	* Fix 2.6.9 RHEL kernels, which have compatibility mutex.h, but
	don't define mutex_destroy(), bummer.  Patch from Phil Schwan

2007-02-04  Miklos Szeredi <miklos@szeredi.hu>

	* Compile fuseblk for kernels which don't have an option to turn
	off the block layer (CONFIG_BLOCK).  Reported by Szakacsits
	Szabolcs

2007-02-03  Miklos Szeredi <miklos@szeredi.hu>

	* Add filesystem stacking support to high level API.  Filesystem
	modules can be built into libfuse or loaded from shared object
	(.so) files

	* Add 'subdir' and 'iconv' built in modules

	* lib/fuse.c: Fix locking for the reply code in create and open

2007-02-02  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: make it compile on "strange" kernels which have emulated
	mutexes via <linux/mutex.h> but no i_mutex.  Reported by Tomasz
	Mateja

2007-01-28  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: fix BUG in control filesystem if it is umounted and
	mounted again, while some fuse filesystems are present.
	Bugreport from Florent Mertens

	* kernel: sync with mainline, support 2.6.20

2007-01-22  Miklos Szeredi <miklos@szeredi.hu>

	* lib/Makefile.am: actually link libfuse against libfuse_libs

2007-01-19  Miklos Szeredi <miklos@szeredi.hu>

	* Build fix for 2.6.16 vanila and 2.6.15 FC5 kernels.  Patch from
	Ian Abbott

2007-01-18  Miklos Szeredi <miklos@szeredi.hu>

	* Fix abort in fuse_new() compatibility API for opts == NULL case.
	Novell bugzilla #233870.  Patch from Takashi Iwai.

2007-01-13  Miklos Szeredi <miklos@szeredi.hu>

	* Fix option parsing in mount.fuse.  Patch from Jens M. Noedler

2007-01-02  Miklos Szeredi <miklos@szeredi.hu>

	* Fix unaligned access in file desctriptor passing in libfuse,
	fusermount and ulockmgr.  Debian bug ID: 404904.  Reported and
	tested by Sebastian Fontius

2006-12-16  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: don't keep unreferenced inodes in the icache.

2006-12-15  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: Fix detection of fuseblk.  Reported by Szakacsits
	Szabolcs

	* lib: Fix use after free in fuse_flush().  Reported by Ron
	Lindman

2006-12-10  Miklos Szeredi <miklos@szeredi.hu>

	* mount.fuse: add "setuid=USER" option which does a "su - USER"
	for the filesystem

	* fusermount: use "/bin/mount -f" to add entry to /etc/mtab, and
	"/bin/umount" to remove entry from /etc/mtab.  This gets rid of
	the ugly code dealing with mtab, as well as a possible race
	between fusermount and mount trying to modify /etc/mtab at the
	same time

	* Fix "buffer size too small: 4" warning for users of the
	fuse_loop_mt_proc() function.

2006-12-04  Miklos Szeredi <miklos@szeredi.hu>

	* Fix warnings with gcc-4.1 on 64bit archs.  Report from
	Harshavardhana

	* Add extra warning options, and fix resulting warnings

	* Really fix fuse_teardown problem

2006-12-02  Miklos Szeredi <miklos@szeredi.hu>

	* Add -lrt to fuse.pc (if needed) to fix static linking against
	libfuse.  Reported by Szakacsits Szabolcs

2006-12-01  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.6.1

2006-11-30  Miklos Szeredi <miklos@szeredi.hu>

	* Fix API version 21 and 22 compatibility for fuse_teardown.
	Reported by Bgs

2006-11-29  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: Print a more helpful message in case the kernel
	doesn't support the 'fuseblk' filesystem type.  This has been
	biting ntfs-3g users.  Reported by Yura Pakhuchiy

	* kernel: fix build problem for "make -C ...".  Reported by
	Stephen Bryant

2006-11-19  Miklos Szeredi <miklos@szeredi.hu>

	* Fix bug in certain error paths of lookup routines.  The request
	object was reused for sending FORGET, which is illegal.  This bug
	could cause an Oops in linux-2.6.18 or in fuse-2.6.0, and might
	silently corrupt memory in earlier versions.  Report and test
	program by Russ Cox

2006-11-11  Miklos Szeredi <miklos@szeredi.hu>

	* Print an error if an incompatible kernel interface version is
	detected in INIT.  This will only show if filesystem is started
	with -d or -f

	* Fix order of fuse_destroy()/fuse_unmount() in error cleanup of
	fuse_setup_common().  Reported by Szakacsits Szabolcs

2006-11-06  Miklos Szeredi <miklos@szeredi.hu>

	* Fix recursive locking in fuse_create().  Thanks to Takuya
	Ishibashi for the bug report

2006-10-28  Miklos Szeredi <miklos@szeredi.hu>

	* Fix automake problem.  Patch from Nix

2006-10-26  Miklos Szeredi <miklos@szeredi.hu>

	* Fix mount.fuse to use /bin/sh instead of /bin/bash, which is not
	always available on embedded systems.  Patch from Paul Smith

	* Fix util/Makefile.am, so that failure to run update-rc.d or
	device creation doesn't cause make to fail.  Reported by Paul
	Smith

2006-10-21  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.6.0

2006-10-18  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: don't try to create a lock file if /etc/mtab is a
	symlink.  Report and patch from Alexei Sheplyakov (debian bug
	#393693)

2006-10-17  Miklos Szeredi <miklos@szeredi.hu>

	* Minor changes, sync with mainline tree

2006-10-16  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.6.0-rc3

2006-10-15  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: cleanups

2006-10-13  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: Fix compilation on patched 2.6.18 (fc6) and 2.6.19.
	Report from David Shaw

	* lib: Fix lost error on renaming a file. Report from David Shaw

	* lib: Fix lost error on hiding open files (renaming to
	.fuse_hiddenXXXX)

	* kernel: Fix a rare hang on SMP/32bit on heavy filesystem
	activity.  The cause of the bug was that some calls to
	i_size_write() were not protected by a lock, and hence
	i_size_seqcount could become corrupted.  This caused subsequent
	calls to i_size_read() to spin forever.  This is a long standing
	bug was probably introduced in version 2.2, and thought to be
	related to NFS exporting (it's not).  It was reported by various
	people, but Dana Henriksen has finally helped me to track it down,
	so big thanks to him

	* kernel: Protect against truncation of a swapfile

2006-10-10  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: Check for signature of super_operations->umount_begin().
	Ubuntu kernel 2.6.17 seems to use the new signature found in
	2.6.18.  Thanks to Florent Mertens for the report

2006-10-08  Miklos Szeredi <miklos@szeredi.hu>

	* Make sure inode numers wrap around at 2^32.  This is needed on
	dual 64bit/32bit architectures, because 32bit applications using
	the non-largefile interface would otherwise break (EOVERFLOW error
	would be returned by the stat() system call family)

	* ulockmgr: handle the case, when a locking operation fails
	because no more file desctriptors are available in
	ulockmgr_server.  Also work around a Linux kernel bug (known to
	exist for all Linux kernel versions <= 2.6.18) which may cause
	sent file descriptors to be lost in the above case

	* ulockmgr: optimize file descriptor use

	* restore needed cpp flags to util/Makefile.am

	* Install udev rules as 99-fuse.rules instead of 60-fuse.rules

	* Minor clean up of udev rules

	* Add a synchronous DESTROY message to kernel interface.  This is
	invoked from umount, when the final instance of the filesystem is
	released.  It is only sent for filesystems mounted with the
	'blkdev' option for security reasons.

	* If the DESTROY message is received, call the filesystem's
	->destroy() method.  In this case it's not called from session
	destruction as it would be otherwise.

2006-10-01  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.6.0-rc2

2006-10-01  Miklos Szeredi <miklos@szeredi.hu>

	* Add support for FLUSH+RELEASE operation for FreeBSD.  Original
	patch by Csaba Henk

	* Add init script to insert fuse module and mount the control
	filesystem.  The script is installed as /etc/init.d/fuse and on
	debian based systems (where update-rc.d is available) symlinks
	from /etc/rc*.d/ are also installed.

	* Include '#define FUSE_USE_VERSION=XX' into examples so they
	become more self contained.

2006-09-30  Miklos Szeredi <miklos@szeredi.hu>

	* API changes:

	* Move lock_owner from a separate argument into fuse_file_info

	* Add a flag to fuse_file_info indicating (1) a highlevel lock
	operation (unlock all) was initiated by a flush, (2) a lowlevel
	release operation should perform a flush as well.

	* fusermount: revert modprobe change (2006-08-18) since it
	doesn't work reliably with udev

	* Add support for block device backed filesystems.  This mode is
	selected with the 'blkdev' option, which is privileged.

	* Add support for the bmap (FIBMAP ioctl) operation on block
	device backed filesystems.  This allows swapon and lilo to work on
	such filesystems.

	* kernel changes:

	* Drop support for kernels earlier than 2.6.9.  Kernel module from
	previous (2.5.x) release can be used with library from this
	release

	* In fuse_dentry_revalidate() use dget_parent() instead of
	dereferencing d_parent, since there's no protection against parent
	changing and going away

	* Protect nlookup from concurrent updates

	* In lookup if a directory alias exists but is unused,
	then get rid of it, otherwise return -EBUSY.

	* In mkdir if a directory alias exists, return success, but leave
	dentry negative.  In reality this could happen if a remote rename
	immediately followed the mkdir.

	* Don't BUG in fuse_iget() if multiple retries are needed to get a
	good inode.  This could happen if several lookups are racing for
	the same inode.

2006-09-29  Miklos Szeredi <miklos@szeredi.hu>

	* Fix compilation on 2.6.9.  Report from Troy Ayers

2006-09-27  Miklos Szeredi <miklos@szeredi.hu>

	* Fix Oops in fuse_readpages().  Reported by David Shaw

2006-09-24  Csaba Henk <csaba.henk@creo.hu>

	* Add support for nanosec times on FreeBSD

	* Fix FreeBSD compatibility issues

2006-09-23  Miklos Szeredi <miklos@szeredi.hu>

	* Fix one more compatibility bug.  Thanks to Ricardo Correia

	* Fix utimens compilation with uClibc.  Patch from Jamie Guinan

2006-09-22  Miklos Szeredi <miklos@szeredi.hu>

	* Fixed several compatibility bugs in low level interface.
	Reported by Ricardo Correia

	* Add workaround for ARM caching bug

2006-09-16  Miklos Szeredi <miklos@szeredi.hu>

	* Rename new utimes() method to more logical utimens()

2006-09-14  Miklos Szeredi <miklos@szeredi.hu>

	* Fuse tried to unlink already unlinked hidden files.  Bug
	reported by Milan Svoboda

2006-09-10  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.6.0-rc1

2006-09-10  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: Fix unlock on close for kernels < 2.6.18

	* Add ulockmgr library & server.  This can be used for handling
	file locking requests either directly from libfuse or over a
	network, etc.  This first version is not optimized and the number
	of file descriptors it uses may get out of hand

2006-09-07  Miklos Szeredi <miklos@szeredi.hu>

	* lib: Add interrupt support to high level library, which may be
	enabled with the 'intr' mount option.

	* When an operation is interrupted the thread handling that
	operation will receive SIGUSR1 (or other signal specified with the
	'intr_signal=N' option).  The library installs a no-op signal
	handler for this signal, unless there's already a handler
	installed.

	* The filesystem may query interrupt status (regardless of 'intr')
	with the fuse_interrupted() function.

	* mount.fuse: initialize $HOME if not set.  Report from Sven Goldt

2006-09-03  Miklos Szeredi <miklos@szeredi.hu>

	* lib: Multithreaded loop now allows unlimited number of threads.
	This is needed for locking operations which may block
	indefinitely.  Also the kernel now doesn't limit the number of
	outstanding requests so the library shouldn't do so either.

2006-09-01  Miklos Szeredi <miklos@szeredi.hu>

	* Fix recursive lock bug in interrupt handling

	* Add utimes() method to highlevel interface, which supports
	setting times with nanosecond resolution

2006-08-18  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: fix page leak if fuse_readpages() failed in it's
	initialization.  Bug found and original patch from Alexander
	Zarochentsev

	* For linux kernels >=2.6.18 (2.6.19 if using the fuse module from
	the kernel tree) the statfs method will receive the path within
	the filesystem on which the stat(v)fs syscall was called

	* fusermount: try to modprobe fuse module if invoked by root and
	unable to open device.  This is needed with udev, since the device
	node will be created only when the module is inserted, hence
	module autoloading won't work.  Reported by Szakacsits Szabolcs

2006-07-30  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: if selinux is active, restore the original file's
	security context in unmount_rename().  Redhat bugzilla id 188561.
	Patch from Yves Perrenoud

	* Add POSIX file locking operation to high level library

	* Initialize context for unlink of hidden files on umount.  Bug
	reported by Tim Stoakes

2006-07-14  Miklos Szeredi <miklos@szeredi.hu>

	* Multiple release() calls can race with each other, resulting in
	the hidden file being deleted before the last release finishes.
	Bug found and patch tested by Mark Huijgen

2006-07-05  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: if /dev/fuse doesn't exist, suggest modprobing fuse;
	this makes sense on systems using udev.  Reported by Szakacsits
	Szabolcs

2006-06-29  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.6.0-pre3

2006-06-29  Miklos Szeredi <miklos@szeredi.hu>

	* Support in kernel module for file locking and interruption.  The
	same functionality is available in official kernels >= 2.6.18

2006-06-28  Miklos Szeredi <miklos@szeredi.hu>

	* Add POSIX file locking support

	* Add request interruption

2006-06-06  Miklos Szeredi <miklos@szeredi.hu>

	* Add missing pthread_rwlock_destroy().  Patch from Remy Blank

2006-06-05  Remy Blank <remy.blank@pobox.com>

	* lib: canonicalize mount point in fuse_helper_opt_proc() so that
	unmounting succeeds even if mount point was relative.

2006-06-04  Csaba Henk <csaba.henk@creo.hu>

	* lib: fix emergency umount in helper.c when malloc fails.
	(The way it was done would end up in a segfault.)

2006-06-01  Csaba Henk <csaba.henk@creo.hu>

	* lib: adjust threading related compiler flags.
	Switch to "-pthread" from "-lpthread" as that's the preferred
	one on several platforms. Consulted with Terrence Cole and
	Miklos Szeredi

2006-05-08  Miklos Szeredi <miklos@szeredi.hu>

	* lib: search fusermount in installation directory (bindir) as
	well as in PATH.

2006-05-03  Miklos Szeredi <miklos@szeredi.hu>

	* lib: fix compilation if CLOCK_MONOTONIC is not defined.
	Reported by Christian Magnusson

2006-04-23  Csaba Henk <csaba.henk@creo.hu>

	* lib: make FreeBSD mount routine recognize if kernel features
        backgrounded init and if it does, run the mount util in foreground
        (similarly to Linux)

2006-04-21  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: fix fput deadlock fix, the lockless solution could lead
	to "VFS: busy inodes after umount..."

	* kernel: fix race between checking and setting file->private_data
	for the device.  Found by Al Viro

2006-04-11  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: remove request pool, instead allocate requests on
	demand.  Account the number of background requests, and if they go
	over a limit, block the allocation of new requests.

	* kernel: fix deadlock if backgrounded request holds the last
	reference to the super block

	* kernel: don't use fuse_reset_request() during direct I/O

2006-04-06  Csaba Henk <csaba.henk@creo.hu>

	* lib: Let FreeBSD mount option parsing routine recognize "no"
	prefixes for FUSE specific options as well

2006-04-01  Miklos Szeredi <miklos@szeredi.hu>

	* lib: Add missing rwlock initialization.  Patch by Ryan Bradetich

2006-03-17  Miklos Szeredi <miklos@szeredi.hu>

	* API changes:

	* fuse_main(), fuse_setup() and fuse_new() have an additionl
	user_data parameter

	* fuse_mount() returns a 'struct fuse_chan' pointer instead of a
	file descriptor

	* fuse_unmount() receives a 'struct fuse_chan' pointer.  It
	destroys the given channel

	* fuse_teardown() no longer has a file descriptor parameter

	* new exported functions: fuse_session_remove_chan(),
	fuse_get_session(), fuse_daemonize()

	* fuse_chan_recv() may now return a new channel which will be used
	to send the reply

2006-03-16  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.6.0-pre2

2006-03-16  Miklos Szeredi <miklos@szeredi.hu>

	* Don't unmount if already unmounted.  This fixes a problem seen
	in the following situation: Lazy unmount a busy filesystem; Mount
	a new one in top; When the first finally unmounts, the second also
	unmounts.  Reported by Franco Broi

2006-03-15  Miklos Szeredi <miklos@szeredi.hu>

	* lowlevel lib: use indirect function calls instead of a
	switch/case construct.  Besides increased efficiency it helps
	maintainability & readability too.  Patch from Florin Malita

2006-03-13  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: replace global spinlock with a per-connection spinlock

2006-03-10  Miklos Szeredi <miklos@szeredi.hu>

	* Fix source compatibility breakage for fuse_unmount().  Report
	from Yura Pakhuchiy

2006-03-02  Miklos Szeredi <miklos@szeredi.hu>

	* Fix O_ASYNC handling in fuse_dev_release().  From Jeff Dike

2006-03-01  Miklos Szeredi <miklos@szeredi.hu>

	* Add O_ASYNC and O_NONBLOCK support to FUSE device.  Patch by
	Jeff Dike

	* Renamed fuse_chan_receive() to fuse_chan_recv() and changed
	interface to return -errno in case of error.

2006-03-01  Csaba Henk <csaba.henk@creo.hu>

	* libfuse: pass device file descriptor to fuse_unmount(), rewrite
	FreeBSD implementation so that it uses libc (sysctl backed) instead
	of an embdedded script (kmem backed). Adjust the control flow of
	hello_ll so that device doesn't get closed before unmount attempt.

2006-02-25  Miklos Szeredi <miklos@szeredi.hu>

	* Lowlevel lib: return all-zero statvfs data if filesystem doesn't
	implement method.  This is needed on FreeBSD, and nicer on Linux
	too.  Highlevel lib already did this.  Reported by Csaba Henk

	* Fix negative entry handling.  There was a bug, that negative
	lookups with timeouts (nodeid == 0) returned -EIO.

2006-02-23  Miklos Szeredi <miklos@szeredi.hu>

	* Fix race between RELEASE and UNLINK, which might leave
	.fuse_hidden* files around

2006-02-21  Miklos Szeredi <miklos@szeredi.hu>

	* fusexmp_fh: implement flush() method and call close() on the
	open file descriptor.  This is needed if used on an NFS
	filesystem, which buffers data until file is closed.  Franco Broi
	spotted the situation when 'cp -p' failed to set the modification
	time because of this.

2006-02-20  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.6.0-pre1

2006-02-19  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: fix use-after-free bug in interruptred reply_entry().
	Patch from John Muir

	* libfuse: fix wrong symbol versioning for fuse_mount.  Debian bug
	ID: 352631.  Found by Stéphane Rosi

2006-02-17  Miklos Szeredi <miklos@szeredi.hu>

	* Lowlevel lib: Unify fuse_dirent_size() and fuse_add_dirent()
	into a single function fuse_add_direntry().  This cleans up the
	interface and makes it possible to do stacking.

2006-02-16  Miklos Szeredi <miklos@szeredi.hu>

	* Fix rare race betweeen abort and release caused by failed iget()
	in fuse_create_open().

	* Add 'ac_attr_timeout' option e.g. for filesystems which do their
	own attribute caching.

2006-02-15  Miklos Szeredi <miklos@szeredi.hu>

	* Work around FreeBSD runtime linker "feature" which binds an old
	version of a symbol to internal references if the symbol has more
	than one version.  This resulted in infinite recursion in
	fuse_lowlevel_new_compat25().

2006-02-10  Csaba Henk <csaba.henk@creo.hu>

	* Refine clock_gettime() querying so that linker options
	shall be set as it's appropriate for the target platform.

2006-02-09  Miklos Szeredi <miklos@szeredi.hu>

	* Fix udev rule syntax.  Reported by Nix

2006-02-08  Miklos Szeredi <miklos@szeredi.hu>

	* In some cases udev rule seems to be ineffective when installed
	as 40-fuse.rules but work as 60-fuse.rules.  Reported by John Hunt

2006-02-03  Miklos Szeredi <miklos@szeredi.hu>

	* Fix compilation when build directory is different from source
	directory.  Reported by Frédéric L. W. Meunier

2006-02-02  Miklos Szeredi <miklos@szeredi.hu>

	* Fix even bigger bug introduced in fix for request_end() on
	2006-01-14.  Reported by Gal Rosen

2006-01-30  Miklos Szeredi <miklos@szeredi.hu>

	* highlevel-lib: add 'auto_cache' option.  This caches file data
	based on modification time and size

2006-01-20  Miklos Szeredi <miklos@szeredi.hu>

	* Sanitize storage type and help message in mount_bsd.c.  Patch
	from Csaba Henk

	* fuse_opt: add new helper constants FUSE_OPT_KEY_KEEP and
	FUSE_OPT_KEY_DISCARD

	* Add options 'max_readahead', 'sync_read' and 'async_read'

	* Kernel ABI version 7.6:

	* Negotiate the 'max_readahead' value and 'async_read' flags with
	userspace in the INIT method

	* Add connection info to ->init() methods to both lowlevel and
	highlevel API

	* Fall back to synchronous read() behavior if either library or
	userspace filesystem is using the old interface version.  This is
	needed so non-updated filesystems won't be confused by the
	different read() behavior

2006-01-19  Miklos Szeredi <miklos@szeredi.hu>

	* lib: if "fsname=" option was given, pass it to fusermount

	* fuse_opt: add new fuse_opt_insert_arg() function, which is
	needed by filesystems to implement some argument manipulations
	correctly

	* fuse_opt: fix memory leak in handling "--" option

2006-01-18  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: fix detection of case when fuse is not configured into
	the kernel either as module or built-in

	* fuse_opt.h: fix incompatibility with C++ compilers by renaming
	'template' structure member to 'templ'.  Reported by Takashi Iwai

	* fuse.h: fix compatibility bugs.  Patch by Yura Pakhuchiy

	* kernel: support version 2.6.16 (i_sem -> i_mutex)

2006-01-16  Miklos Szeredi <miklos@szeredi.hu>

	* Added (again) asynchronous readpages support

	* Each connection now shows up under /sys/fs/fuse/connections

	* Connection attributes exported to sysfs: 'waiting' number of
	waiting requests; 'abort' abort the connection

	* Connection may be aborted through either the sysfs interface or
	with 'umount -f mountpoint'

2006-01-14  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.5.0

2006-01-14  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: fix a couple of bugs

	* Order of request_end() and fuse_copy_finish() was wrong.
	Posthumous note: Franco Broi managed to exploit this, though it
	seemed quite impossible

	* request_end() used request pointer after decrementing refcount

	* Clearing ->connected or ->mounted connection flags could race
	with setting other bitfields not protected with a lock

2006-01-10  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: add necessary compile flags for 2.4.X/x86_64.
	Report from Sean Ziegeler

2006-01-09  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.5.0-pre2

2006-01-09  Miklos Szeredi <miklos@szeredi.hu>

	* Applied patch from Csaba Henk, to update mount_bsd to new
	fuse_mount() semantics

	* Ignore auto,noauto,... options in mount.fuse.  Reported by Frank
	Steiner and Don Taber

	* fusermount: add 'dirsync' mount option

2006-01-07  Miklos Szeredi <miklos@szeredi.hu>

	* Improved help reporting and added version reporting to library

2006-01-06  Miklos Szeredi <miklos@szeredi.hu>

	* Change working directory to "/" even if running in the
	foreground.  Patch from Jonathan Brandmeyer

	* Changed lots of functions to use 'struct fuse_args' instead of
	separate argc and argv

	* Added fuse_parse_cmdline(), fuse_set_signal_handlers() and
	fuse_remove_signal_handlers() functions, so that it's now pretty
	easy to get all the functionality of fuse_main() with a filesystem
	using the lowlevel API.

2006-01-02  Miklos Szeredi <miklos@szeredi.hu>

	* mount.fuse: the 'user' option should be ignored. Report and
	solution from Mattd.

	* mount.fuse: export PATH in the right place. Report and patch
	from Hannes Schweizer

2005-12-16  Miklos Szeredi <miklos@szeredi.hu>

	* Clean up the option parsing interface slightly, by creating an
	"argument list" structure, that contains the argument vector and
	count

2005-12-15  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: check if /mnt/mtab is a symlink and don't modify it
	in that case

	* kernel: simplify request size limiting. INIT only contains
	maximum write size, maximum path component size remains fixed at
	1024 bytes, and maximum xattr size depends on read buffer.

2005-12-14  Miklos Szeredi <miklos@szeredi.hu>

	* Fix readdir() failure on x86_64, of 32bit programs compiled
	without largefile support.  Bug report and help from Anthony
	Kolasny

	* If lookup returns invalid mode, return -EIO instead of creating
	a regular file

	* Add current output argument vector to option processing
	function

2005-12-12  Miklos Szeredi <miklos@szeredi.hu>

	* Fix stale code in ifdef FreeBSD.  Patch from Csaba Henk

2005-12-09  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.5.0-pre1

2005-12-09  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: added option parsing interface, defined in
	<fuse_opt.h>.

2005-12-07  Miklos Szeredi <miklos@szeredi.hu>

	* Return EIO for file operations (read, write, fsync, flush) on
	open files whose inode has become "bad".  Inodes will be marked
	"bad" if their type changes.  Bug report by Csaba Henk

2005-12-06  Miklos Szeredi <miklos@szeredi.hu>

	* Use bigger request buffer size.  write() did not work on archs
	with > 4k page size, Bug report by Mark Haney

	* ABI version 7.5:

	* Extend INIT reply with data size limits

2005-12-02  Miklos Szeredi <miklos@szeredi.hu>

	* Fix memory leak in fuse_read_cmd()/fuse_process_cmd().  Bug
	reported by Vincenzo Ciancia

	* Handle exit-by-umount in fuse_read_cmd()

2005-11-29  Miklos Szeredi <miklos@szeredi.hu>

	* Check if '-msoft-float' option is supported by compiler when
	configuring for a 2.4.x kernel.  Bug report by Mark Haney

	* In multithreaded loop send a TERM signal to the main thread if
	one of the other threads exit.  Needed on FreeBSD for a clean exit
	on umount.  Should not cause any harm on Linux either

2005-11-28  Miklos Szeredi <miklos@szeredi.hu>

	* Fix bug in 32-bit file handle compatibility

2005-11-27  Miklos Szeredi <miklos@szeredi.hu>

	* Block TERM, INT, HUP and QUIT signals in all but the main
	thread.  According to POSIX it's not specified which thread will
	receive these signals.

	* Kernel changes:

	* Check for directory aliasing on mkdir, not just on lookup

	* Check for special node ID values in create+open operation

	* Sync with -mm: readv, writev, aio_read and aio_write methods
	added to file operations

	* Cleanups: lookup code, page offset calculation

	* ABI stepped to 7.4, changes:

	* frsize member added to fuse_kstatfs structure

	* added support for negative entry caching: on lowlevel API if
	fuse_entry_param::ino is set to zero in reply to a lookup request,
	the kernel will cache the dentry for the specified amount of time.

	* libfuse: added 'negative_timeout' option: specifies how much
	negative entries should be cached.  Default is zero, to be
	compatible with prior versions

2005-11-22  Miklos Szeredi <miklos@szeredi.hu>

	* Add detection of mainline FUSE code in running kernel

2005-11-21  Miklos Szeredi <miklos@szeredi.hu>

	* Don't use async cancelation in multithreaded loop.  This makes
	it more portable to systems where read() is not async cancel safe.
	Report from Andriy Gapon

2005-11-20  Miklos Szeredi <miklos@szeredi.hu>

	* Warn if API version 11 compatibility is requested

2005-11-17  Miklos Szeredi <miklos@szeredi.hu>

	* More FreeBSD merge

	* fusermount: don't allow mountpoints with '\n', '\t', or '\\' in
	them, because it corrupts /etc/mtab.  Found by Thomas Biege
	CVE-2005-3531

	* libfuse: don't use system() to invoke 'fusermount -u ...'
	because it breaks mountpoints with spaces in them into multiple
	arguments

2005-11-16  Miklos Szeredi <miklos@szeredi.hu>

	* Merge library part of FreeBSD port.  Patch by Csaba Henk

2005-11-11  Miklos Szeredi <miklos@szeredi.hu>

	* Use 64bit type for file handle, so the full range supported by
	the kernel interface is available to applications

2005-11-10  Miklos Szeredi <miklos@szeredi.hu>

	* Moved mountpoint argument checking from fuse_parse_cmdline() to
	fuse_mount() in preparation to FreeBSD merge.

2005-11-08  Miklos Szeredi <miklos@szeredi.hu>

	* Remove unneeded close() from fuse_teardown().  Spotted by Csaba
	Henk.

2005-11-07  Miklos Szeredi <miklos@szeredi.hu>

	* Make the statfs change backwards compatible.

2005-11-06  Miklos Szeredi <miklos@szeredi.hu>

	* Change ->statfs() method to use 'struct statvfs' instead of
	'struct statfs'.  This makes the API more portable since statvfs()
	is defined by POSIX.

2005-10-28  Miklos Szeredi <miklos@szeredi.hu>

	* Add fgetattr() method, which currently will only be called after
	a successful call to a create() method.

2005-10-26  Miklos Szeredi <miklos@szeredi.hu>

	* Change kernel ABI version to 7.3

	* Add ACCESS operation.  This is called from the access() system
	call if 'default_permissions' mount option is not given, and is
	not called on kernels 2.4.*

	* Add atomic CREATE+OPEN operation.  This will only work with
	2.6.15 (presumably) or later Linux kernels.

	* Add ftruncate() method.  This will only work with 2.6.15
	(presumably) or later Linux kernels.

	* Fix kernel module compile if kernel source and build directories
	differ.  Report and initial patch by John Eastman

2005-10-18  Miklos Szeredi <miklos@szeredi.hu>

	* lib: optimize buffer reallocation in fill_dir.

2005-10-17  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.4.1

2005-10-14  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: add debug for write result (by Shaun Jackman) and
	warnings for too large read/write result

2005-10-11  Miklos Szeredi <miklos@szeredi.hu>

	* Spelling fixes, thanks to Ioannis Barkas

2005-10-10  Miklos Szeredi <miklos@szeredi.hu>

	* fuse_common.h: use extern "C".  Thanks to Valient Gough for the
	patch

2005-10-07  Miklos Szeredi <miklos@szeredi.hu>

	* highlevel-lib: init() and destroy() methods didn't have an
	initialized fuse_context.  Bug reported by Tim Stoakes

2005-10-04  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.4.0

2005-10-03  Miklos Szeredi <miklos@szeredi.hu>

	* Add documentation to fuse_lowlevel.h

	* API cleanups:

	* Remove definitions of unused FATTR_CTIME / FUSE_SET_ATTR_CTIME

	* Move fuse_mount() and fuse_unmount() to fuse_common.h

	* Change the return type of fuse_reply_none() from int to void.

2005-09-30  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: NFS exporting leaked dentries.  Bug found and fixed by
	Akshat Aranya.

2005-09-29  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: fix error message, when unable to open /dev/fuse.
	Report by Balázs Pozsár

2005-09-28  Miklos Szeredi <miklos@szeredi.hu>

	* UClibc fixes from Christian Magnusson

2005-09-27  Miklos Szeredi <miklos@szeredi.hu>

	* Added NAME="%k" to util/udev.rules.  Fix by Mattias Wadman.

2005-09-26  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.4.0-rc1

2005-09-26  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: allow user umount in the case when /etc/mtab is a
	symlink to /proc/mounts.  Reported by Balázs Pozsár.

2005-09-23  Miklos Szeredi <miklos@szeredi.hu>

	* Check for special node ID values in lookup and creation

2005-09-22  Miklos Szeredi <miklos@szeredi.hu>

	* Slight optimization in returning EINVAL error in case of an open
	with O_DIRECT flag.

2005-09-20  Miklos Szeredi <miklos@szeredi.hu>

	* Remove '--enable-auto-modprobe' configure flag.  Module
	auto-loading is now handled by the kernel.

2005-09-15  Miklos Szeredi <miklos@szeredi.hu>

	* Install UDEV rule file, so /dev/fuse is created with mode 0666.
	Help from Jens M. Noedler.

2005-09-14  Miklos Szeredi <miklos@szeredi.hu>

	* Add memory cleanup on thread exit

2005-09-13  Miklos Szeredi <miklos@szeredi.hu>

	* Set umask to zero in fusexmp and fusexmp_fh, so that
	files/directories are created with the requested mode.

2005-09-12  Miklos Szeredi <miklos@szeredi.hu>

	* Don't ignore read error in multithreaded loop

2005-09-08  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.4.0-pre2

2005-09-08  Miklos Szeredi <miklos@szeredi.hu>

	* Revert lock and access operations.  Postpone these until 2.5.

2005-09-02  Miklos Szeredi <miklos@szeredi.hu>

	* Fix compile warning on 2.6.13 and later

	* Fix compilation on old kernels

2005-08-19  Miklos Szeredi <miklos@szeredi.hu>

	* lib: always refresh directory contents after rewinddir() to
	conform to SUS.  Bug found by John Muir.

2005-08-15  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.4.0-pre1

2005-08-14  Miklos Szeredi <miklos@szeredi.hu>

	* lib: cleaned up (or messed up, depending on your POV) the low
	level library API.  Hopefully this is close to the final form.

2005-08-05  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: don't allow empty mountpoint argument, which defeats
	automatic umounting in fuse_main().  Bugreport by Václav Jůza

2005-08-03  Miklos Szeredi <miklos@szeredi.hu>

	* fix warnings in fuse.h and fuse_lowlevel.h if -Wshadow compiler
	option is used (Paul Alfille).

2005-08-02  Miklos Szeredi <miklos@szeredi.hu>

	* highlevel-lib: added mount options "attr_timeout" and
	"entry_timeout".  These options control the length of time file
	attributes and entries (names) are cached.  Both default to 1.0
	second.

	* kernel: correctly handle zero timeout for attributes and entries

2005-08-01  Miklos Szeredi <miklos@szeredi.hu>

	* Added missing symbols to versionscript (Joshua J. Berry)

	* kernel: implement two flags, open can set: 'direct_io' and
	'keep_cache'.  These correspond exactly to mount options
	'direct_io' and 'kernel_cache', but allow a per-open setting.

	* Move 'direct_io' and 'kernel_cache' mount option handling to
	userspace.  For both mount options, if the option is given, then
	the respective open flag is set, otherwise the open flag is left
	unmodified (so the filesystem can set it).

	* lib (highlevel): make open method optional

2005-07-28  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: invalidate attributes for read/readdir/readlink
	operations

	* kernel: detect newer UML kernels

2005-07-26  Miklos Szeredi <miklos@szeredi.hu>

	* Make the installation path of fuse.ko and mount.fuse
	configurable through INSTALL_MOD_PATH and MOUNT_FUSE_PATH
	environment variables.  Requirement and help from Csaba Henk.

2005-07-22  Miklos Szeredi <miklos@szeredi.hu>

	* Fix bug, that causes filesystem requests to hang when unique
	request counter becomes negative.  This happens after
	2,147,483,648 operations, so most people won't care.  Thanks to
	Franco Broi for the report and testing.

2005-07-21  Miklos Szeredi <miklos@szeredi.hu>

	* Don't change mtime/ctime/atime to local time on read/write.
	Bug reported by Ben Grimm

	* Install fuse_common.h and fuse_lowlevel.h.  Report by Christian
	Magnusson

	* fusermount: use getopt_long() for option parsing.  It allows the
	use of '--' to stop argument scanning, so fusermount can now
	operate on directories whose names begin with a '-'.  Patch by
	Adam Connell

2005-07-15  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: add '-v', '--version' and '--help' options

	* add inode based API

2005-07-12  Miklos Szeredi <miklos@szeredi.hu>

	* lib: don't block signals in worker threads.  Problem noticed by
	Usarin Heininga

2005-07-07  Miklos Szeredi <miklos@szeredi.hu>

	* lib: don't allow both 'allow_other' and 'allow_root' options to
	be given

2005-07-06  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: check if mountpoint is empty (only '.' and '..' for
	directories, and size = 0 for regular files).  If "nonempty"
	option is given, omit this check.  This is useful, so users don't
	accidentally hide data (e.g. from backup programs).  Thanks to
	Frank van Maarseveen for pointing this out.

	* kernel: check if mandatory mount options ('fd', 'rootmode',
	'user_id', 'group_id') are all given

	* lib: simplify 'readdir_ino' handling

	* lib: add mount options 'umask=M', 'uid=N', 'gid=N'

2005-07-03  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: clean up 'direct_io' code

2005-06-28  Miklos Szeredi <miklos@szeredi.hu>

	* Add 'mount.fuse' written by Petr Klima

	* '/dev/fuse' is created by 'make install' if does not yet exist

2005-06-20  Miklos Szeredi <miklos@szeredi.hu>

	* Fix UCLIBC compile error.  Patch by Christian Magnusson

2005-06-08  Miklos Szeredi <miklos@szeredi.hu>

	* Enable the auto-loading of the module via access to the
	corresponding device file.  Patch by Takashi Iwai.

	* Allow mounting a regular file (over a regular file) for
	unprivleged users.

	* Do not create temporary device file.  Require "/dev/fuse" to
	exist, and be readable/writable by the mounting user.

2005-06-02  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.3.0

2005-06-02  Miklos Szeredi <miklos@szeredi.hu>

	* Fix serious information leak: if the filesystem returns a short
	byte count to a read request, and there are non-zero number of
	pages which are not filled at all, these pages will not be zeroed.
	Hence the user can read out previous memory contents.  Found by
	Sven Tantau.

2005-05-27  Miklos Szeredi <miklos@szeredi.hu>

	* Add "readdir_ino" mount option, which tries to fill in the d_ino
	field in struct dirent.  This mount option is ignored if "use_ino"
	is used.  It helps some programs (e.g. 'pwd' used over NFS from a
	non-Linux OS).  Patch by David Shaw.

2005-05-12  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.3-rc1

2005-05-12  Miklos Szeredi <miklos@szeredi.hu>

	* File save in krusader and other editors doesn't work with sshfs,
	because open() is interrupted by a periodic signal, and open()
	restarts forever, without any progress.  This could just be fixed
	in open(), but the problem is more generic: if signals are
	received more often than the filesystem can get the request to
	userspace, it will never finish.  This is probably only a
	theoretical problem, nevertheless I'm removing the possibility to
	interrupt requests with anything other than SIGKILL, even before
	being sent to userspace.  Bugreport by Eduard Czimbalmos.

2005-05-09  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: add "tree_lock" rwlock, that is locked for write in
	rename, unlink and rmdir, and locked for read in all other
	operations.  This should fix the rename/release race reported by
	Valient Gough and others.  The solution is very coarse, a finer
	grained locking scheme could be implemented, but it would be much
	more complex.  Let's see whether this is good enough.

2005-05-09  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.3-pre7

2005-05-08  Miklos Szeredi <miklos@szeredi.hu>

	* Better fix for out of order FORGET messages.  Now the
	LOOKUP/FORGET messages are balanced exactly (one FORGET can
	balance many lookups), so the order no longer matters.  This
	changes the kernel ABI slightly, but the library remains backward
	compatible.

2005-05-06  Miklos Szeredi <miklos@szeredi.hu>

	* Fix abort for out of order FORGET messages.  Again.  Spotted by
	Franco Broi again.  Sorry :)

2005-04-29  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.3-pre6

2005-04-29  Miklos Szeredi <miklos@szeredi.hu>

	* Make fusermount work with fuse kernel modules not yet supporting
	the "group_id" option (added for the purpose of stricter
	permission checking).

2005-04-28  Miklos Szeredi <miklos@szeredi.hu>

	* Check for hard-linked directories in lookup.  This could cause
	problems in the VFS, which assumes that such objects never exist.

	* Make checking of permission for other users more strict.  Now
	the same privilege is required for the mount owner as for ptrace
	on the process performing the filesystem operation.

2005-04-23  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.3-pre5

2005-04-22  Miklos Szeredi <miklos@szeredi.hu>

	* Add -msoft-float to kernel module compile flags for 2.4.X.  This
	is needed on certain architectures.  Report from Chris Kirby

	* Fix buggy behavior of open(..., O_CREAT|O_EXCL) if interrupted.
	Reported by David Shaw

	* Remove "allow_root" option from kernel module, and implement
	it's functionality in the library

	* Fix Oops caused by premature release of fuse_conn.  Clean up
	related code, to be more readable

	* Sendfile should not use page cache if "direct_io" mount option
	is given

2005-04-08  Miklos Szeredi <miklos@szeredi.hu>

	* Fix Oops in case of nfs export.  Spotted by David Shaw

	* Fix another Oops in case of write over nfs with direct_io turned
	on.  Again spotted by David Shaw

2005-04-07  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.3-pre4

2005-04-07  Miklos Szeredi <miklos@szeredi.hu>

	* lib: finalized new readdir() interface, which now supersedes the
	getdir() method.

2005-04-03  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.3-pre3

2005-04-03  Miklos Szeredi <miklos@szeredi.hu>

	* Implement backward compatibility with version 5 kernel ABI

2005-04-01  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.3-pre2

2005-04-01  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: fix dirent offset handling

	* lib: add readdir and releasedir methods

	* lib: use fh field of fuse_file_info in opendir, readdir,
	releasedir and fsyncdir methods

	* lib: check kernel API version and bail out of it's old.  This
	will be properly fixed in the next release

2005-03-31  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.3-pre1

2005-03-31  Miklos Szeredi <miklos@szeredi.hu>

	* kernel API: add padding to structures, so 64bit and 32bit
	compiler will return the same size

	* kernel API: add offset field to fuse_dirent.  This will allow
	more sophisticated readdir interface for userspace

	* kernel API: change major number to 6

	* kernel: fix warnings on 64bit archs

	* kernel: in case of API version mismatch, return ECONNREFUSED

2005-03-24  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: trivial cleanups

2005-03-21  Miklos Szeredi <miklos@szeredi.hu>

	* Add fsyncdir() operation

2005-03-19  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: add locking to background list (fixes previous fix)

2005-03-18  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: fix bug which could cause leave busy inodes after
	unmount, and Oops.

2005-03-08  Miklos Szeredi <miklos@szeredi.hu>

	* examples: add -lpthread to link flags to work around valgrind
	quirk

	* lib: don't exit threads, so cancelation doesn't cause segfault

2005-03-04  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: fix nasty bug which could cause an Oops under certain
	situations.  Found by Magnus Johansson

2005-02-28  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: added opendir() method.  This can be used in case
	permission checking in getdir() is too late.  Thanks to Usarin
	Heininga for pointing out this deficiency

	* libfuse: added init() and destroy() methods to fuse_operations

	* kernel: llseek() method for files and directories made explicit

	* kernel: fixed inode leak in NFS export in case of nodeid
	wrapping

2005-02-15  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse: clean up some unitialized memory found with valgrind

	* Add -lpthread to Libs in fuse.pc.  Valgrind seems to need an
	explicitly linked libpthread for applications

2005-02-10  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: set umask, otherwise /etc/mtab will have
	unpredictable permission.  Spotted by Jindrich Kolorenc

	* fusermount: set owner and group of /etc/mtab to original values
	on unmount

	* libfuse: add 'use_ino' option to help.  Patch by Valient Gough

2005-02-07  Miklos Szeredi <miklos@szeredi.hu>

	* Cleaned up directory reading (temporary file is not used)

2005-02-02  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.2

2005-02-02  Miklos Szeredi <miklos@szeredi.hu>

	* Fix possible race when operation is interrupted

2005-01-28  Miklos Szeredi <miklos@szeredi.hu>

	* Fix compilation on 2.6.7

2005-01-26  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.2-pre6

2005-01-26  Miklos Szeredi <miklos@szeredi.hu>

	* Fix bug in link() operation which caused the wrong path to be
	passed as the first argument.  Found by Anton Altaparmakov

2005-01-21  Miklos Szeredi <miklos@szeredi.hu>

	* LIB: fix double reply in readdir operation

	* fusermount: fix uid checking bug.  Patch by Adam Connell

	* KERNEL: fix compile on various RedHat patched 2.4 kernels.
	Patch by Keshava Gowda

2005-01-20  Miklos Szeredi <miklos@szeredi.hu>

	* KERNEL: provide correct llseek semantics for fuse device (fixes
	a bug on Progeny 2.4.20 kernel).  Reported by Valient Gough

2005-01-20  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.2-pre5 (matches kernel 2.6.11-rc1-mm2)

2005-01-18  Miklos Szeredi <miklos@szeredi.hu>

	* KERNEL ABI: remove GETDIR operation, and add OPENDIR, READDIR
	and RELEASEDIR.  This ends the ugly hack of passing a file
	descriptor to the kernel, and actually makes the code simpler.

2005-01-17  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.2-pre4

2005-01-17  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: remove capability setting, which was the cause of
	problems for some users.  It seems that FS related capabilities
	are removed by setfsuid(), so this isn't even needed.

2005-01-15  Miklos Szeredi <miklos@szeredi.hu>

	* fix compilation on 2.4 kernels (reported by Valient Gough)

	* fix failure to unmount bug (found by David Shaw)

	* fusermount: improve parsing of /etc/fuse.conf

2005-01-13  Miklos Szeredi <miklos@szeredi.hu>

	* Remove 'mount_max' and 'user_allow_other' module options.  These
	are now checked by fusermount, and can be set in /etc/fuse.conf

	* KERNEL: change check for fsid == 0 to capable(CAP_DAC_OVERRIDE)

2005-01-11  Miklos Szeredi <miklos@szeredi.hu>

	* KERNEL: fix possible inode allocation problem, where
	sizeof(struct inode) is not aligned (found by Mike Waychison)

	* KERNEL: use new follow_link/put_link methods

	* KERNEL: cosmetic fixes

2005-01-10  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.2-pre3

2005-01-10  Miklos Szeredi <miklos@szeredi.hu>

	* Add missing code that was accidently left out

2005-01-09  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.2-pre2

2005-01-09  Miklos Szeredi <miklos@szeredi.hu>

	* Change "uid" mount option to "user_id" to avoid confusion with a
	mount option "uid" commonly used by many filesystems

2005-01-09  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.2-pre1

2005-01-09  Miklos Szeredi <miklos@szeredi.hu>

	* If FUSE is configured in the kernel, don't build it by default

2005-01-07  Miklos Szeredi <miklos@szeredi.hu>

	* Compile fix by Christian Magnusson

2005-01-05  Miklos Szeredi <miklos@szeredi.hu>

	* Fix compilation for 2.6.{0-5} kernels

2005-01-04  Miklos Szeredi <miklos@szeredi.hu>

	* KERNEL: if request is interrupted, still keep reference to used
	inode(s) and file, so that FORGET and RELEASE are not sent until
	userspace finishes the request.

	* remove /{sys,proc}/fs/fuse/version, and instead add an INIT
	request with the same information, which is more flexible,
	simpler, works on embedded systems.

2004-12-16  Miklos Szeredi <miklos@szeredi.hu>

	* KERNEL ABI: update interface to make it independent of type
	sizes.  This will help on 64 bit architectures which can run
	legacy 32 bit applications.

	* KERNEL ABI: add "len" field to request headers.  This will allow
	sending/receiving requests in multiple chunks.

	* KERNEL: handle file type change more intelligently

	* LIB: "-o debug" option should disable backgrounding (fix by
	Fabien Reygrobellet)

2004-12-13  Miklos Szeredi <miklos@szeredi.hu>

	* KERNEL: invalidate dentry/attributes if interrupted request
	could leave filesystem in an unknown state.

2004-12-12  Miklos Szeredi <miklos@szeredi.hu>

	* KERNEL: lots of cleanups related to avoiding possible deadlocks.
	These will cause some regressions, but stability is considered
	more important.  If any of these features turns out to be
	important, it can be readded with the deadlock problems addressed.

	* Make all requests interruptible (only with SIGKILL currently).
	This can be used to break any deadlock produced by the userspace
	filesystem accessing it's own exported files.  The RELEASE request
	is special, because if it's interrupted before sending it to
	userspace it is still sent, but the reply is not awaited.

	* If request is interrupted before being sent to userspace, and if
	it hasn't yet got any side effects, it is always restarted,
	regardless of the SA_RESTART flag.  This makes these interruptions
	transparent to the process.

	* Remove shared-writable mmap support, which was prone to an
	out-of-memory deadlock situation

	* Remove INVALIDATE userspace initiated request

	* Make readpages() synchronous.  Asynchronous requests are
	deadlock prone, since they cannot be interrupted.

	* Add readv/writev support to fuse device operations

	* Remove some printks, which userspace FS can use for a DoS
	against syslog

	* Remove 'large_read' mount option from 2.6 in kernel, check it in
	fusermount instead

	* LIB: improve compatibility with a fuse.h header installed in
	${prefix}/include which in turn includes the real header.

	* LIB: improve compatibility by defining fuse_main() (which is now
	not used), so old configure scripts find it.

2004-12-10  Miklos Szeredi <miklos@szeredi.hu>

	* When mounting on a subdirectory of / don't duplicate slashes at
	the beggining of path (spotted by David Shaw)

2004-12-09  Miklos Szeredi <miklos@szeredi.hu>

	* Fix bug causing garbage in mount options (spotted by David Shaw)

2004-12-07  Miklos Szeredi <miklos@szeredi.hu>

	* Add 'writepage' flag to 'fuse_file_info'.

	* More comments in fuse.h

	* Get rid of double underscores

2004-12-04  Miklos Szeredi <miklos@szeredi.hu>

	* Add -D_FILE_OFFSET_BITS=64 to cflags provided by pkg-config

	* helper.c: add -ho option, which only displays the options not
	the usage header.  This can be used by filesystems which have
	their own options.

2004-12-03  Miklos Szeredi <miklos@szeredi.hu>

	* Add source compatibility to 2.1 and 1.1 APIs.  To select betwen
	versions simply define FUSE_USE_VERSION to 22, 21 or 11 before
	including the fuse header

	* Add binary compatibility to 2.1 version of library with symbol
	versioning

2004-12-03  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.1

2004-12-01  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: clean up writing functions

	* kernel: no allocation on write in direct_io mode

	* move linux/fuse.h to fuse_kernel.h

2004-11-30  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: clean up reading functions

2004-11-29  Miklos Szeredi <miklos@szeredi.hu>

	* kernel: make readpage() uninterruptible

	* kernel: check readonly filesystem flag in fuse_permission

	* lib: don't die if version file not found and new style device
	exists

	* lib: add '-r' option, which is short for '-o ro'

	* fusermount: simplify device opening

	* kernel: when direct_io is turend on, copy data directly to
	destination without itermediate buffer.  More efficient and safer,
	since no allocation is done.

	* fusermount: fix warning if fuse module is not loaded

	* kernel: use /dev/fuse on 2.4 too

2004-11-26  Miklos Szeredi <miklos@szeredi.hu>

	* libfuse API change: open, read, write, flush, fsync and release
	are passed a 'struct fuse_file_info' pointer containing the open
	flags (open and release), and the file handle.  Verion changed to
	3.0.

2004-11-23  Miklos Szeredi <miklos@szeredi.hu>

	* More cleanups in the kernel

	* The 10,229 charater device number has been assigned for FUSE

	* Version file checking fix (reported by Christian Magnusson)

	* fusermount: opening the fuse device now doesn't need /sys.

	* Optimize reading by controlling the maximum readahead based on
	the 'max_read' mount option

	* fixes for UCLIBC (Christian Magnusson)

2004-11-19  Miklos Szeredi <miklos@szeredi.hu>

	* Cleaned up kernel in preparation for merge into mainline:

	* Use /sys/fs/fuse/version instead of /proc/fs/fuse/version

	* Use real device (/dev/fuse) instead of /proc/fs/fuse/dev

	* __user annotations for sparse

	* allocate individual pages instead of kmalloc in fuse_readdir,
	fuse_read and fuse_write.

	* Fix NFS export in case "use_ino" mount option is given

	* Make libfuse and fusermount compatible with future versions

	* fusermount: properly add mount options to /etc/mtab

2004-11-15  Miklos Szeredi <miklos@szeredi.hu>

	* fusermount: do not resolve last component of mountpoint on if it
	is '.' or '..'.  This new path resolvation is now done on mount as
	well as unmount.  This enables relative paths to work on unmount.

	* fusermount: parse common mount options like "ro", "rw", etc...

	* Allow module params to be changed through sysfs

2004-11-14  Miklos Szeredi <miklos@szeredi.hu>

	* Released 2.1-pre1

2004-11-14  Miklos Szeredi <miklos@szeredi.hu>

	* Fix bug in fuse_readpages() causing Oops in certain situations.
	Bug found by Vincenzo Ciancia.

	* Fix compilation with kernels versions > 2.6.9.

2004-11-11  Miklos Szeredi <miklos@szeredi.hu>

	* Check kernel interface version in fusermount to prevent
	strangeness in case of mismatch.

	* No need to allocate fuse_conn until actual mount happens

	* Fix potential race between umount and fuse_invalidate

	* Check superblock of proc file in addition to inode number

	* Fix race between request_send_noreply() and fuse_dev_release()

2004-11-10  Miklos Szeredi <miklos@szeredi.hu>

	* Separate configure for the kernel directory

	* Don't allow write to return more than 'count'

	* Extend kernel interface for future use

2004-11-09  Miklos Szeredi <miklos@szeredi.hu>

	* Fix 'makeconf.sh' to use autoreconf if available

2004-11-08  Miklos Szeredi <miklos@szeredi.hu>

	* Add ino argument to 'fuse_dirfil_t'.  NOTE: This breaks source
	compatibility with earlier versions.  To compile earier versions
	just add '-DFUSE_DIRFIL_COMPAT' compile flag or fix the source.
	Do not use the "use_ino" mount flag with filesystems compiled with
	FUSE_DIRFIL_COMPAT.

	* Add pkg-config support.  To compile a FUSE based filesystem you
	can do  "gcc -Wall `pkg-config --cflags --libs fuse` myfs.c -o myfs"
	or similar.  Note, that the PKG_CONFIG_PATH environment variable
	usually needs to be set to "/usr/local/lib/pkgconfig".

	* fuse.h is now installed in ${prefix}/include/fuse/

2004-11-02  Miklos Szeredi <miklos@szeredi.hu>

	* Added "use_ino" mount option.  This enables the filesystems to
	set the st_ino field on files

2004-11-01  Miklos Szeredi <miklos@szeredi.hu>

	* Fix compile problems with ancient (<=2.4.18) kernels (reported
	by Jeremy Smith)

	* Add "allow_root" mount option.  Patch by Yaroslav Rastrigin

	* Clear the 'exited' flag when mail loop is finished

2004-10-28  Miklos Szeredi <miklos@szeredi.hu>

	* Make xattr functions work under 2.6 (bug found by Vincenzo
	Ciancia)

2004-10-26  Miklos Szeredi <miklos@szeredi.hu>

	* Reset request in fuse_flush() (bugreport by David Shaw)

2004-10-21  Miklos Szeredi <miklos@szeredi.hu>

	* fuse_main() now does not exit on error, rather it returns an
	error code

	* Exported __fuse_setup() and __fuse_teardown() functions, which
	make it easier to implement a custom event loop.

	* Use daemon() call to background the filesystem after mounting.
	This function closes the standard input, output and error and
	changes the current working directory to "/".

2004-10-14  Miklos Szeredi <miklos@szeredi.hu>

	* Released 1.9

2004-10-09  Miklos Szeredi <miklos@szeredi.hu>

	* Don't allow fuse_flush() to be interrupted (bug found by David
	Shaw)

2004-09-27  Miklos Szeredi <miklos@szeredi.hu>

	* Add PID to fuse_context.  Patch by Steven James

	* Change file handle type to 'unsigned long' in kernel interface

2004-09-22  Miklos Szeredi <miklos@szeredi.hu>

	* A slight API change: fuse_get_context() doesn't need the "fuse"
	pointer, but the returned context contains it instead.  The
	fuse_get() function is not needed anymore, so it's removed.

	* Fix mounting and umounting FUSE filesystem under another FUSE
	filesystem by non-root (bug spotted by Valient Gough)

2004-09-21  Miklos Szeredi <miklos@szeredi.hu>

	* Fix deadlock in case of memory allocation failure.  Patch by
	Christian Magnusson

2004-09-16  Miklos Szeredi <miklos@szeredi.hu>

	* Check memory allocation failures in libfuse

2004-09-14  Miklos Szeredi <miklos@szeredi.hu>

	* Check temporary file creation failure in do_getdir().  Bug
	spotted by Terje Oseberg

2004-09-13  Miklos Szeredi <miklos@szeredi.hu>

	* Allow "large_read" option for 2.6 kernels but warn of deprecation

	* Make requests non-interruptible so race with FORGET is avoided.
	This is only a temporary solution

	* Support compiling FUSE kernel module on 2.4.x UML kernels

2004-09-09  Miklos Szeredi <miklos@szeredi.hu>

	* Fix bug in case two FORGETs for the same node are executed in
	the wrong order.  Bug spotted and endured for months by Franco
	Broi, and logfile for solution provided by Terje Oseberg

2004-09-01  Miklos Szeredi <miklos@szeredi.hu>

	* Add -D_REENTRANT to the compile flags

	* Add documentation of fuse internals by Terje Oseberg

2004-08-16  Miklos Szeredi <miklos@szeredi.hu>

	* Change release method to be non-interruptible.  Fixes bug
	causing missing release() call when program which has opened files
	is killed (reported by Franco Broi and David Shaw)

2004-07-29  Miklos Szeredi <miklos@szeredi.hu>

	* Add fuse_invalidate() to library API

2004-07-26  Miklos Szeredi <miklos@szeredi.hu>

	* Check permissions in setattr if 'default_permissions' flag is
	set.  Bug spotted by Damjan Lango

2004-07-24  Miklos Szeredi <miklos@szeredi.hu>

	* 'large_read' mount option removed for 2.6 kernels, since the
	default (dynamic read size) is better

	* Extend kernel API with file handles.  A file handle is returned
	by open, and passed to read, write, flush, fsync and release.
	This is currently only used for debug output in the library.

	* Security changes:

	* Change the current directory to the mountpoint before checking
	the permissions and mount filesystem on "."

	* By default don't modprobe the fuse module for non-root.  The old
	behavior can be restored with the '--enable-auto-modprobe' flag of
	./configure

	* By default don't allow shared writable mappings for non-root.
	The old behavior can be restored with the 'user_mmap=1' module
	parameter

2004-07-23  Miklos Szeredi <miklos@szeredi.hu>

	* Clean up mount option passing to fusermount and to fuse_new()
	BEWARE: this changes the userspace API slightly, and the command
	line usage of programs using fuse_main()

2004-07-20  Miklos Szeredi <miklos@szeredi.hu>

	* Optimize reading under 2.6 kernels by issuing multiple page
	asynchronous read requests

2004-07-18  Miklos Szeredi <miklos@szeredi.hu>

	* Only use redirty_page_for_writepage() for kernels >= 2.6.6

2004-07-16  Miklos Szeredi <miklos@szeredi.hu>

	* Separate directory entry and inode attribute validity timer

	* New write semaphore to stop page writeback during truncate

	* Fsync now waits for all writes to complete before sending the
	request

	* Optimization: if a page is completely written by
	fuse_commit_write(), clear the dirty flag and set the uptodate
	flag for that page

	* Some memory cleanup at exit

2004-07-13  Miklos Szeredi <miklos@szeredi.hu>

	* Add FUSE_HARD_REMOVE flag, and '-i' option to fuse main, which
	disable the "hide if open" behavior of unlink/rename.

	* If temporary buffer allocation fails in raw read, fall back to a
	smaller buffer

2004-07-12  Miklos Szeredi <miklos@szeredi.hu>

	* Fix bug in do_open() in libfuse: open count was incremented
	after the reply is sent so it could race with unlink/forget and
	cause an abort.

2004-07-08  Miklos Szeredi <miklos@szeredi.hu>

	* When performing create or remove operation, refresh the parent's
	attributes on next revalidate, as i_nlink (and maybe size/time)
	could be inacurate.

	* Use redirty_page_for_writepage() in fuse_writepage() for skipped
	pages (2.6 only)

	* Set set_page_dirty address space operation (2.6 only)

2004-07-06  Miklos Szeredi <miklos@szeredi.hu>

	* Minor fix in read:  print debug info even if read size is zero

2004-07-04  Miklos Szeredi <miklos@szeredi.hu>

	* Fix race between truncate and writepage (fsx-linux now runs
	without error)

2004-07-02  Miklos Szeredi <miklos@szeredi.hu>

	* Fix kernel hang on mkfifo under 2.4 kernels (spotted and patch
	by Mattias Wadman)

	* Added option for direct read/write (-r)

	* Fix revalidate time setting for newly created inodes

	* Remove uid==0 check for '-x' option in fusermount (kernel checks
	this)

	* fuse_main() only installs handlers for signals (out of INT, HUP,
	TERM, PIPE), for which no handler has yet been installed

	* Add module option 'user_allow_other' which if set to non-zero
	will allow non root user to specify the 'allow_other' mount option
	('-x' option of fusermount)

	* Fix deadlock between page writeback completion and truncate
	(bug found by Valient Gough with the fsx-linux utility)

2004-07-01  Miklos Szeredi <miklos@szeredi.hu>

	* Change passing fuse include dir to 2.6 kernel make system more
	robust (fixes compile problems seen on SuSE 9.1 with updated 2.6
	kernel)

2004-06-30  Miklos Szeredi <miklos@szeredi.hu>

	* Acquire inode->i_sem before open and release methods to prevent
	concurrent rename or unlink operations.

	* Make __fuse_read_cmd() read only one command.  This allows
	multiplexing the fuse file descriptor with other event sources
	using select() or poll() (patch by Jeff Harris)

	* Export 'exited' flag with __fuse_exited() (patch by Jeff Harris)

2004-06-27  Miklos Szeredi <miklos@szeredi.hu>

	* Fix file offset wrap around at 4G when doing large reads

2004-06-24  Miklos Szeredi <miklos@szeredi.hu>

	* Fix memory leak in open (Valient Gough)

2004-06-24  Miklos Szeredi <miklos@szeredi.hu>

	* Add "close after delete" support to libfuse (patch by Valient
	Gough)

	* Cancel all worker threads before exit in multithreaded mode

2004-06-23  Miklos Szeredi <miklos@szeredi.hu>

	* Fix locking bugs

	* Don't send reply to RELEASE

	* Work with newer libtool (1.5a)

	* Check for st_atim member of struct stat

2004-06-22  Miklos Szeredi <miklos@szeredi.hu>

	* No request allocation needed on inode and file release

2004-06-21  Miklos Szeredi <miklos@szeredi.hu>

	* Fix possible inode leak in userspace in case of unfinished
	lookup/mknod/mkdir/symlink/link operation.

2004-06-20  Miklos Szeredi <miklos@szeredi.hu>

	* Fix some races and cleanups in fuse_read_super()

2004-06-19  Miklos Szeredi <miklos@szeredi.hu>

	* Requests are allocated at open time

2004-06-03  Miklos Szeredi <miklos@szeredi.hu>

	* Build shared library as well as static (using libtool)

	* Change FUSE_MINOR_VERSION from 1 to 0.  I know it's illegal but
	there has not been a release with the previous minor number, and I
	hope nobody is using it for anything.

	* Change fuse_main(), so that default behavior is to go into
	background if mount is successful.  '-f' and '-d' options disable
	backgrounding.  This fixes the "Why does my FUSE daemon hang?"
	newbie complaint.

	* Cache ENOSYS (function not implemented) errors on *xattr, flush
	and fsync

	* Don't call getdir method from open() only from first readdir().
	Open is sometimes just used to store the current directory
	(e.g. find)

2004-05-18  Miklos Szeredi <miklos@szeredi.hu>

	* Added flush() call

2004-05-04  Miklos Szeredi <miklos@szeredi.hu>

	* Extended attributes support for 2.4 (patch by Cody Pisto)

2004-04-20  Miklos Szeredi <miklos@szeredi.hu>

	* Fixed parser with modversions (Mattias Wadman)

2004-04-19  Miklos Szeredi <miklos@szeredi.hu>

	* Added mount option parser to 2.4 build

2004-04-13  Miklos Szeredi <miklos@szeredi.hu>

	* Replaced binary mount data with text options

	* Show FUSE specific mount options in /proc/mounts

	* Check in fuse.h whether _FILE_OFFSET_BITS is set to 64

2004-04-09  Miklos Szeredi <miklos@szeredi.hu>

	* Check some limits so userspace won't get too big requests

2004-04-05  Miklos Szeredi <miklos@szeredi.hu>

	* Kill compile warning

	* Upgraded user-mount patch for 2.6.5

2004-04-02  Miklos Szeredi <miklos@szeredi.hu>

	* Add detection of user-mode-linux to configure

2004-03-31  Miklos Szeredi <miklos@szeredi.hu>

	* fixed zero size case for getxattr and listxattr

2004-03-30  Miklos Szeredi <miklos@szeredi.hu>

	* new fusermount flag '-z': lazy unmount, default is not lazy

	* Extended attributes operations added (getxattr, setxattr,
	listxattr, removexattr)

2004-03-25  Miklos Szeredi <miklos@szeredi.hu>

	* If filesystem doesn't define a statfs operation, then an
	all-zero default statfs is returned instead of ENOSYS

2004-03-24  Miklos Szeredi <miklos@szeredi.hu>

	* Add FS_BINARY_MOUNTDATA filesystem flag for kernels > 2.6.4

2004-03-09  Miklos Szeredi <miklos@szeredi.hu>

	* Fix for uClinux (Christian Magnusson)

2004-03-02  Miklos Szeredi <miklos@szeredi.hu>

	* fuse_main() adds "-n progname" to the fusermount command line

	* More kernel interface changes:

	* Lookup/getattr return cache timeout values

2004-02-25  Miklos Szeredi <miklos@szeredi.hu>

	* Clean up option parsing in fuse_main()

	* Added fuse_get() function which returns the fuse object created
	by fuse_main()

2004-02-20  Miklos Szeredi <miklos@szeredi.hu>

	* removed old way of mounting (fusermount mountpoint program)

	* more kernel interface changes:

	* added nanosecond precision to file times

	* removed interface version from mount data

	* added /proc/fs/fuse/version which contains MAJOR.MINOR

2004-02-19  Miklos Szeredi <miklos@szeredi.hu>

	* statfs library API changed to match other methods.  Since this
	  is not backward compatible FUSE_MAJOR_VERSION is changed to 2

	* kernel interface changes follow:

	* statfs changed to 64 bits, added 'bavail' field

	* add generation number to lookup result

	* optimized mknod/mkdir/symlink/link (no separate lookup is
	needed)

	* rdev size increased to 32 bits for mknod

	* kernel interface version changed to 3.1

2004-02-18  Miklos Szeredi <miklos@szeredi.hu>

	* user-mount upgraded for 2.6.3 kernel

2004-02-17  Miklos Szeredi <miklos@szeredi.hu>

	* Added user-mount.2.6.2-rc3.patch

	* Add FS_SAFE flag to fuse filesystem

	* fusermount should allow (un)mounting for non-root even if not
	suid-root

2004-02-12  Miklos Szeredi <miklos@szeredi.hu>

	* Remove MS_PERMISSION mount flag (that means something else now)

2004-02-10  Miklos Szeredi <miklos@szeredi.hu>

	* Added check for i_size_read/write functions to configure.in
	(patch by Valient Gough)

2004-02-06  Miklos Szeredi <miklos@szeredi.hu>

	* Fixed writing >= 2G files

	* Check file size on open (with generic_file_open())

	* Readpage calls flush_dcache_page() after storing data

	* Use i_size_read/write for accessing inode->i_size

	* Make loopback mount of a fuse file work

2004-02-04  Miklos Szeredi <miklos@szeredi.hu>

	* Released 1.1

2004-01-29  Miklos Szeredi <miklos@szeredi.hu>

	* Properly check if the inode exists in fuse_invalidate

2004-01-27  Miklos Szeredi <miklos@szeredi.hu>

	* Added -q option for fusermount

	* fuse_unmount() now uses -q option of fusermount, so no error is
	printed if the cause of the program exit is that the filesystem
	has already been unmounted

	* Fix i_nlink correctness after rmdir/unlink

2004-01-26  Miklos Szeredi <miklos@szeredi.hu>

	* Released 1.1-pre2

2004-01-26  Miklos Szeredi <miklos@szeredi.hu>

	* Fix typo (thanks Marcos Dione)

	* Compile fixes for 2.4 kernels

2004-01-23  Miklos Szeredi <miklos@szeredi.hu>

	* Fix CONFIG_MODVERSIONS compile on 2.6

2004-01-22  Miklos Szeredi <miklos@szeredi.hu>

	* Write all pending data before a RELEASE operation

	* Suppress 'Bad file descriptor' warning on exit

	* Replaced fusermount option '-d xxx' with '-n xxx' so it doesn't
	get confused with '-d' of fuse_main() (sorry about this change)

	* New fusermount option '-l' which enables big reads.  Big reads
	are now disabled by default.

	* fuse_main() can accept fusermount arguments after a '--'

2004-01-19  Miklos Szeredi <miklos@szeredi.hu>

	* Support for exporting filesystem over NFS (see README.NFS)

2004-01-14  Miklos Szeredi <miklos@szeredi.hu>

	* Support non-blocking writepage on 2.6.  This makes FUSE behave
	much more nicely in low-memory situations

	* Fix 32-bit dev handling in getattr and mknod for 2.6 kernels.
	(Note: the mknod method does not yet use 32bit device number)

2004-01-13  Miklos Szeredi <miklos@szeredi.hu>

	* Code cleanups

2004-01-07  Miklos Szeredi <miklos@szeredi.hu>

	* Released 1.1-pre1

2004-01-06  Miklos Szeredi <miklos@szeredi.hu>

	* Integrated 2.6 kernel support patch by Michael Grigoriev

	* Improvements and cleanups for 2.6 kernels

2004-01-05  Miklos Szeredi <miklos@szeredi.hu>

	* Added -d option to fusermount

2003-12-15  Miklos Szeredi <miklos@szeredi.hu>

	* Added major+minor version to library API, and minor version to
	  kernel API

2003-12-13  David McNab <david@rebirthing.co.nz>

	* Implemented fsync support in examples/example.py

	* Implemented 'fsync' and 'statfs' methods in python
	  interface

2003-12-12  Miklos Szeredi <miklos@szeredi.hu>

	* Make it compile on 2.4.19.

	* Add fsync operation (write file failed on xemacs & vi)

2003-12-12  David McNab <david@rebirthing.co.nz>

	* Added distutils support to the python module, as per standard
	  python development practice

2003-12-11  Miklos Szeredi <miklos@szeredi.hu>

	* Add file locking for mount/unmount (based on patch by Valient
	Gough)

2003-12-11  David McNab <david@rebirthing.co.nz>

	* Python filesystem - was broken with python2.3, now fixed:
	   - changed PyTuple_* calls to PySequence_*, because os.lstat
	     is no longer returning a pure tuple
	   - changed PyInt_Check() calls to also call PyLong_Check,
	     to cover for cases (eg os.lstat) where longs are returned
	   - Added support for file 'release' handling, which IMO is
	     essential since this signals to a FS that writes to a file
	     are complete (and therefore the file can now be disposed of
	     meaningfully at the python filesystem's discretion)
	   - Added '__init__' handler to base Fuse class, which allows
	     your Python class to know the mountpoint and mount args,
	     as attributes myfs.mountpoint, myfs.optlist, myfs.optdict

	* General:
	   - added 'mount.fuse' script (in util/ dir), which is meant to be
	     symlinked from /sbin, and which allows FUSE filesystems to
	     be mounted with the 'mount' command, and listed in fstab;
	     also, mount arguments get passed to your filesystem


2003-11-04  Miklos Szeredi <miklos@szeredi.hu>

	* Fix kernel version detection (again).  Bugreport by Peter Levart

2003-11-03  Miklos Szeredi <miklos@szeredi.hu>

	* Applied read combining patch by Michael Grigoriev (tested by
	Valient Gough and Vincent Wagelaar)

2003-10-22  Miklos Szeredi <miklos@szeredi.hu>

	* Mtab handling fix in fusermount by "Valient Gough" (SF patch
	#766443)

2003-10-13  Miklos Szeredi <miklos@szeredi.hu>

	* Error code fixes in kernel module

2003-10-04  Miklos Szeredi <miklos@szeredi.hu>

	* kernel version detection fix

	* fusermount now uses "lazy" umount option

	* fusermount can use modprobe with module-init-tools

2003-09-08  Miklos Szeredi <miklos@szeredi.hu>

	* Integrated caching patch by Michael Grigoriev

	* Added "Filesystems" file with descriptions of projects using
	FUSE

	* Added patch by Michael Grigoriev to allow compliation of FUSE
	kernel module for 2.6 kernels

2003-06-02  Miklos Szeredi <miklos@szeredi.hu>

	* And another spec-file fix by Achim Settelmeier

2003-05-26  Miklos Szeredi <miklos@szeredi.hu>

	* Spec-file fix by Achim Settelmeier

2003-03-10  Miklos Szeredi <miklos@szeredi.hu>

	* Fix umount oops (found by Samuli Kärkkäinen)

2003-03-05  Miklos Szeredi <miklos@szeredi.hu>

	* Merge of fuse_redhat.spec and fuse.spec by Achim Settelmeier

2003-03-04  Miklos Szeredi <miklos@szeredi.hu>

	* Updated fuse.spec file (Achim Settelmeier)

2003-02-19  Miklos Szeredi <miklos@szeredi.hu>

	* Version 1.0 released

2003-02-12  Miklos Szeredi <miklos@szeredi.hu>

	* SuSE compilation fix by Juan-Mariano de Goyeneche

2002-12-10  Miklos Szeredi <miklos@szeredi.hu>

	* The release() VFS call is now exported to the FUSE interface

2002-12-05  Miklos Szeredi <miklos@szeredi.hu>

	* 64 bit file offset fixes in the fuse kernel module

	* Added function 'fuse_exit()' which can be used to exit the main
	loop

2002-12-03  Miklos Szeredi <miklos@szeredi.hu>

	* Added _FILE_OFFSET_BITS=64 define to fuse.h.  Note, that this is
	an incompatible interface change.

2002-10-28  Miklos Szeredi <miklos@szeredi.hu>

	* Portablility fix (bug reported by C. Chris Erway)

2002-10-25  Miklos Szeredi <miklos@szeredi.hu>

	* Use Mark Glines' fd passing method for default operation instead
	of old reexec

2002-10-22  Miklos Szeredi <miklos@szeredi.hu>

	* fix "Stale NFS file handle" bug caused by changes in 2.4.19

2002-10-22  Miklos Szeredi <miklos@szeredi.hu>

	* fix incompatiblity with Red Hat kernels, with help from Nathan
	Thompson-Amato.

2002-04-18  Mark Glines <mark@glines.org>

	* added an alternative to fuse_mount(), called
      fuse_mount_ioslave(), which does not need to reexec the
      FUSE program.
	* added a small helper util needed by fuse_mount_ioslave().

2002-03-16  Mark Glines <mark@glines.org>

	* use struct fuse_statfs everywhere possible to avoid problems
      with the headerfiles changing struct statfs member sizes

2002-03-01  Miklos Szeredi <miklos@szeredi.hu>

	* Another RPM spec file for RedHat >= 7 by Ian Pilcher

2002-01-14  Miklos Szeredi <miklos@szeredi.hu>

	* RPM support by Achim Settelmeier

2002-01-09  Miklos Szeredi <miklos@szeredi.hu>

	* Version 0.95 released

2002-01-09  Miklos Szeredi <miklos@szeredi.hu>

	* Revaidate all path components not just the last, this means a
	very small performance penalty for being more up-to-date.

2002-01-08  Miklos Szeredi <miklos@szeredi.hu>

	* Update and fix python interface

2002-01-07  Mark Glines <mark@glines.org>

	* Added statfs() support to kernel, lib, examples, and perl!

2001-12-26  Miklos Szeredi <miklos@szeredi.hu>

	* Better cross compilation support

	* Ported to Compaq IPAQ

2001-12-20  Miklos Szeredi <miklos@szeredi.hu>

	* Added function fuse_get_context() to library API (inspired by
	patch from Matt Ryan)

	* Added flags to fusermount and to kernel interface to control
	permission checking

	* Integrated fuse_set_operations() into fuse_new()

2001-12-08  Miklos Szeredi <miklos@szeredi.hu>

	* Applied header protection + extern "C" patch by Roland
	Bauerschmidt

2001-12-02  Miklos Szeredi <miklos@szeredi.hu>

	* Added perl bindings by Mark Glines

2001-11-21  Miklos Szeredi <miklos@szeredi.hu>

	* Cleaned up way of mounting simple filesystems.

	* fuse_main() helper function added

2001-11-18  Miklos Szeredi <miklos@szeredi.hu>

	* Optimized read/write operations, so that minimal copying of data
	is done

2001-11-14  Miklos Szeredi <miklos@szeredi.hu>

	* Python bindings by Jeff Epler added

2001-11-13  Miklos Szeredi <miklos@szeredi.hu>

	* Fixed vfsmount reference leak in fuse_follow_link

	* FS blocksize is set to PAGE_CACHE_SIZE, blksize attribute from
	userspace is ignored

2001-11-09  Miklos Szeredi <miklos@szeredi.hu>

	* Started ChangeLog
