1FUSE 2.9.9 (2019-01-04)
2=======================
3
4* Added OpenAFS to whitelist (so users can now mount FUSE filesystems
5  on mountpoints within OpenAFS filesystems).
6* Added a test of `seekdir` to test_syscalls.
7* Fixed `readdir` bug when non-zero offsets are given to filler and the
8  filesystem client, after reading a whole directory, re-reads it from a
9  non-zero offset e. g. by calling `seekdir` followed by `readdir`.
10
11FUSE 2.9.8 (2018-07-24)
12=======================
13
14* SECURITY UPDATE: In previous versions of libfuse it was possible to
15  for unprivileged users to specify the `allow_other` option even when
16  this was forbidden in `/etc/fuse.conf`.  The vulnerability is
17  present only on systems where SELinux is active (including in
18  permissive mode).
19* libfuse no longer segfaults when fuse_interrupted() is called outside
20  the event loop.
21* The fusermount binary has been hardened in several ways to reduce
22  potential attack surface. Most importantly, mountpoints and mount
23  options must now match a hard-coded whitelist. It is expected that
24  this whitelist covers all regular use-cases.
25* Fixed rename deadlock on FreeBSD.
26
27FUSE 2.9.7 (2016-06-20)
28=======================
29
30* Added SELinux support.
31* Fixed race-condition when session is terminated right after starting
32  a FUSE file system.
33
34FUSE 2.9.6 (2016-04-23)
35=======================
36
37* Tarball now includes documentation.
38* Shared-object version has now been bumped correctly.
39
40FUSE 2.9.5 (2016-01-14)
41=======================
42
43* New maintainer: Nikolaus Rath <Nikolaus@rath.org>. Many thanks to
44  Miklos Szeredi <miklos@szeredi.hu> for bringing FUSE to where it is
45  now!
46
47* fix warning in mount.c:receive_fd().  Reported by Albert Berger
48
49* fix possible memory leak.  Reported by Jose R. Guzman
50
51FUSE 2.9.4 (2015-05-22)
52=======================
53
54* fix exec environment for mount and umount.  Found by Tavis Ormandy
55  (CVE-2015-3202).
56
57* fix fuse_remove_signal_handlers() to properly restore the default
58  signal handler.  Reported by: Chris Johnson
59
60* highlevel API: fix directory file handle passed to ioctl() method.
61  Reported by Eric Biggers
62
63* libfuse: document deadlock avoidance for fuse_notify_inval_entry()
64  and fuse_notify_delete()
65
66* fusermount, libfuse: send value as unsigned in "user_id=" and
67  "group_id=" options.  Uids/gids larger than 2147483647 would result
68  in EINVAL when mounting the filesystem.  This also needs a fix in
69  the kernel.
70
71* Initilaize stat buffer passed to ->getattr() and ->fgetattr() to
72  zero in all cases.  Reported by Daniel Iwan
73
74* libfuse: Add missing includes.  This allows compiling fuse with
75  musl.  Patch by Daniel Thau
76
77
78Older Versions (before 2013-01-01)
79==================================
80
81
822013-06-20  Miklos Szeredi <miklos@szeredi.hu>
83
84	* libfuse: fix multiple close of device fd.  Reported by Dan
85	Greenfield
86
872013-03-19  Miklos Szeredi <miklos@szeredi.hu>
88
89	* libfuse: fix thread cancel race.  Exiting a worker my race with
90	cancelling that same worker.  This caused a segmenation
91	fault. Reported and tested by Anatol Pomozov
92
932013-02-04  Miklos Szeredi <miklos@szeredi.hu>
94
95	* libfuse: fix crash in unlock_path().  Patch by Ratna Manoj
96
97	* libfuse: fix the 'remember' option.  The lru list was not
98	initialized for the "/" path.  This resulted in remove_node_lru()
99	crashing on LOOKUP-DOTDOT.  Patch by Madan Valluri
100
101	* libfuse: configure: detect new util-linux
102
103	* libfuse: Use AC_CONFIG_HEADERS instead of AM_CONFIG_HEADER.
104	Patch by Anatol Pomozov
105
106	* libfuse: rename ./configure.in to ./configure.ac.  Patch by
107	Anatol Pomozov
108
1092012-10-01  Miklos Szeredi <miklos@szeredi.hu>
110
111	* Released 2.9.2
112
1132012-10-01  Miklos Szeredi <miklos@szeredi.hu>
114
115	* Fix deadlock in libfuse.  Running "svn update" on a fuse
116	filesystem could deadlock because of a bug in the way the paths
117	are locked.  Reported by Kazuaki Anami
118
1192012-08-23  Miklos Szeredi <miklos@szeredi.hu>
120
121	* Fix missing config.h in buffer.c.  Reported by Matthew Gabeler-Lee
122
1232012-08-14  Miklos Szeredi <miklos@szeredi.hu>
124
125	* Not unhashing the name in forget (commit on 2011-12-09) broke
126	the forget logic in a subtle way, resulting in "fuse internal
127	error: node NNN not found" and causing the filesystem daemon to
128	abort.  Fix by incrementing the node refcount if nlookup goes from
129	zero to one.  Reported by Kyle Lippincott
130
1312012-08-13  Miklos Szeredi <miklos@szeredi.hu>
132
133	* Fix linking against GNU libiconv.  Patch by Natanael Copa
134
1352012-07-19  Miklos Szeredi <miklos@szeredi.hu>
136
137	* Released 2.9.1
138
1392012-07-19  Miklos Szeredi <miklos@szeredi.hu>
140
141	* Fix crash caused by freeing a stack address.  Reported by Itay
142	Perl
143
1442012-07-04  Miklos Szeredi <miklos@szeredi.hu>
145
146	* Fix install of mount.fuse from out-of-tree build.  Patch by
147	Olivier Blin
148
149	* Fix build with automake >= 1.12.1.  Patch by Olivier Blin
150
1512012-04-24  Miklos Szeredi <miklos@szeredi.hu>
152
153	* Add fallocate operation.  Only works on linux kernels 3.5 or
154	later.  Patch by Anatol Pomozov
155
1562012-05-16  Miklos Szeredi <miklos@szeredi.hu>
157
158	* Linking to a library that uses threads requires the application
159	to be linked with -pthreads otherwise some pthread functions will
160	be linked to stubs in glibc.  So move -pthread from Libs.private
161	to Libs in fuse.pc.  Reported by Werner Fink
162
163	* Fix the compile command in the examples. Reported by Luciano
164	Dalle Ore
165
1662012-04-20  Miklos Szeredi <miklos@szeredi.hu>
167
168	* Released 2.9.0
169
1702012-04-20  Miklos Szeredi <miklos@szeredi.hu>
171
172	* Add missing fuse_fs_flock to fuse_versionscript
173
1742012-04-10  Miklos Szeredi <miklos@szeredi.hu>
175
176	* Check protocol version before sending notifications and return
177	-ENOSYS if a particular notification is not supported.
178
179	* Add 'flag_utime_omit_ok' flag to fuse_operations.  If the
180	filesystem sets this flag then ->utimens() will receive UTIME_OMIT
181	and UTIME_NOW values as specified in utimensat(2).
182
1832012-01-27  Miklos Szeredi <miklos@szeredi.hu>
184
185	* Interpret octal escape codes in options.  Requested by Jan
186	Engelhardt
187
1882012-01-26  Miklos Szeredi <miklos@szeredi.hu>
189
190	* Add man pages for fusermount, mount.fuse and ulockmgr_server.
191	Lifted from the Debian package.  The man pages were written by
192	Daniel Baumann and Bastien Roucaries
193
1942012-01-13  Miklos Szeredi <miklos@szeredi.hu>
195
196	* Disable symbol versions on MacOSX.  Patch by Anatol Pomozov
197
1982012-01-02  Miklos Szeredi <miklos@szeredi.hu>
199
200	* Remove unnecessary mutex unlock at the end of multithreaded
201	event loop.
202
2032011-12-09  Miklos Szeredi <miklos@szeredi.hu>
204
205	* Fix hang in wait_on_path().  Reported by Ville Silventoinen
206
207	* Don't unhash name in FORGET.  This resulted in ENOENT being
208	returned for unlinked but still open files if the kernel sent a
209	FORGET request for the parent directory.
210
211	* Free request in fuse_reply_data().
212
2132011-12-08  Miklos Szeredi <miklos@szeredi.hu>
214
215	* Fix build if FUSE_NODE_SLAB is not defined.  Patch by Emmanuel
216	Dreyfus
217
218	* Check for availability of utimensat() function.  Patch by
219	Emmanuel Dreyfus
220
2212011-12-07  Miklos Szeredi <miklos@szeredi.hu>
222
223	* Add fuse_lowlevel_notify_delete() which tells the kernel that a
224	file or directory is deleted.  Patch by John Muir
225
2262011-12-06  Miklos Szeredi <miklos@szeredi.hu>
227
228	* Update retrieve_reply() method
229
2302011-12-05  Miklos Szeredi <miklos@szeredi.hu>
231
232	* Low level API: lock argument of fuse_reply_lock should have a
233	'const' qualifier.  Reported by Shachar Sharon
234
235	* Add support for ioctl on directories.  Reported by Antonio SJ
236	Musumeci
237
2382011-10-13  Miklos Szeredi <miklos@szeredi.hu>
239
240	* Reply to request with ENOMEM in case of failure to allocate
241	request structure.  Otherwise the task issuing the request will
242	just freeze up until the filesystem daemon is killed.  Reported by
243	Stephan Kulow
244
2452011-09-23  Miklos Szeredi <miklos@szeredi.hu>
246
247	* Replace daemon() function with fork().  Patch by Anatol Pomozov
248
2492011-08-26  Miklos Szeredi <miklos@szeredi.hu>
250
251	* If configured with --disable-mtab then don't call mount(8) from
252	libfuse to update the mtab.  Reported by: James Sierp
253
2542011-08-24  Miklos Szeredi <miklos@szeredi.hu>
255
256	* Use LRU list for cleaning up the cache if the "remember=T"
257	option was given.  Patch by therealneworld@gmail.com
258
2592011-07-06  Miklos Szeredi <miklos@szeredi.hu>
260
261	* Add ->flock() operation to low and high level interfaces.  This
262	fixes problems with emulating flock() with POSIX locking.
263	Reported by Sebastian Pipping.  As with lock/setlk/getlk most
264	filesystems don't need to implement this, as the kernel takes care
265	of file locking.  The only reason to implement locking operations
266	is for network filesystems which want file locking to work between
267	clients.
268
2692011-07-02  Sebastian Pipping <sebastian@pipping.org>
270
271	* Make xmp_utimens of examples "fusexmp" and "fusexmp_fh"
272	not follow symlinks as other layers do that already.
273
2742011-06-02  Miklos Szeredi <miklos@szeredi.hu>
275
276	* Add "remember" option.  This works similar to "noforget" except
277	that eventually the node will be allowed to expire from the cache.
278	Patch by therealneworld@gmail.com
279
2802011-05-27  Miklos Szeredi <miklos@szeredi.hu>
281
282	* Check if splice/vmsplice are supported
283
2842011-05-26  Miklos Szeredi <miklos@szeredi.hu>
285
286	* Remove -lrt -ldl from fuse.pc for dynamic linking since
287	libfuse.so is already linked with these libraries.  Reported by:
288	Nikolaus Rath
289
2902011-05-20  Miklos Szeredi <miklos@szeredi.hu>
291
292	* Cleaner build output.  Patch by Reuben Hawkins
293
2942011-05-19  Miklos Szeredi <miklos@szeredi.hu>
295
296	* Disable splice by default, add "splice_read", "splice_write" and
297	"splice_move" options.  Keep the "no_splice_*" variants, which can
298	disable splice even if the filesystem explicitly enables it.
299
3002011-04-15  Max Krasnyansky <maxk@kernel.org>
301	* Added support for "auto_unmount" option which unmounts the
302	filesystem automatically on process exit (or crash).
303
3042011-03-30  Miklos Szeredi <miklos@szeredi.hu>
305
306	* Patches by Laszlo Papp fixing various issues found by the
307	Coverity checker
308
3092011-03-11  Miklos Szeredi <miklos@szeredi.hu>
310
311	* In case of failure to add to /etc/mtab don't umount.  Reported
312	by Marc Deslauriers
313
3142011-02-02  Miklos Szeredi <miklos@szeredi.hu>
315
316	* libfuse: In fuse_session_loop_mt() don't pause when exiting the
317	worker threads.  The pause() was added in 2.2.1 to prevent
318	segfault on pthread_cancel() on an exited, detached thread.  Now
319	worker threads are not detached and pthread_cancel() should work
320	fine even after the thread exited.  Reported by Boris Protopopov
321
3222011-01-31  Miklos Szeredi <miklos@szeredi.hu>
323
324	* fusermount: chdir to / before performing mount/umount
325
326	* fusermount: only allow mount and umount if util-linux supports
327	--no-canonicalize
328
3292010-12-16  Miklos Szeredi <miklos@szeredi.hu>
330
331	* Highlevel lib: allow hash tables to shrink
332
333	* Highlevel lib: add slab allocation for node cache.  This will
334	allow the memory used by the filesystem to grow and shrink
335	depending on how many inodes are currently cached.
336
3372010-12-13  Miklos Szeredi <miklos@szeredi.hu>
338
339	* Highlevel lib: use dynamically resized hash table for looking up
340	by name and node ID.
341
3422010-12-07  Miklos Szeredi <miklos@szeredi.hu>
343
344	* Allow batching of forget requests.  This allows forget requests
345	to be processed faster and doesn't require a modification to fuse
346	filesystems.  Reported by Terje Malmedal
347
348	* Add ->forget_multi() operation to the lowlevel API.  The
349	filesystem may implement this to process multiple forget requests
350	in one call
351
352	* Fix the ambiguity of ioctl ABI on the kernel/userspace boundary
353	for 32bit vs. 64bit userspace
354
3552010-11-10  Miklos Szeredi <miklos@szeredi.hu>
356
357	* Add new write_buf() method to the highlevel API.  Similarly to
358	the lowlevel write_buf() method, this allows implementing zero
359	copy writes.
360
361	* Add a new read_buf() method to the highlevel API.  This allows
362	returning a generic buffer from the read method, which in turn
363	allows zero copy reads.
364
365	* In fusexmp_fh implement the ->read_buf() and ->write_buf()
366	methods.  Leave the ->read() and ->write() implementations for
367	reference, even though they are not necessary.
368
3692010-11-08  Miklos Szeredi <miklos@szeredi.hu>
370
371	* Fix check for read-only fs in mtab update
372
373	* Open /dev/null for write instead of read for redirecting stdout
374	and stderr
375
376	* If umount(8) supports --fake and --no-canonicalize (util-linux-ng
377	version 2.18 or later), and umount(2) supports the
378	UMOUNT_NOFOLLOW flag (linux kernel version 2.6.35 or later)  then,
379	"fusermount -u" will call the umount(2) system call and use
380	"umount --fake ..." to update /etc/mtab
381
382	* Added --disable-legacy-umount option to configure.  This
383	disables the runtime checking of umount(8) version.  When built
384	with this option then "fusermount -u" will fail if umount(8)
385	doesn't support the --fake and --no-canonicalize options.
386
387	* Fix fuse_buf_copy() if already at the end of the buffers
388
389	* Add new ->write_buf() method to low level interface.  This
390	allows passig a generic buffer, either containing a memory buffer
391	or a file descriptor.  This allows implementing zero copy writes.
392
393	* Add fuse_session_receive_buf() and fuse_session_process_buf()
394	which may be used in event loop implementations to replace
395	fuse_chan_recv() and fuse_session_process() respectively.
396
397	* Remove unnecessary restoring of current working directory in
398	"fusermount -u"
399
400	* Add ctx->pid to debug output
401
402	* Fix st_nlink value in high level lib if file is unlinked but
403	still open
404
405	* libfuse: add store request.  Request data to be stored in the
406	kernel buffers for a given inode.
407
408	* libfuse: add retrieve request.  Retrieve data stored in the
409	kernel buffers for a given inode.
410
4112010-10-14  Miklos Szeredi <miklos@szeredi.hu>
412
413	* Use LTLIBICONV when linking libfuse.  This fixes building against
414	uclibc + libiconv.  Patch by Natanael Copa
415
4162010-10-05  Miklos Szeredi <miklos@szeredi.hu>
417
418	* Add missing argument check in ulockmgr.c to prevent calling
419	ulockmgr_server with illegal arguments. This would cause an ever
420	growing list of ulockmgr_server processes with an endless list of
421	open files which finally exceeds the open file handle limit.
422	Patch by Markus Ammer
423
4242010-09-28  Miklos Szeredi <miklos@szeredi.hu>
425
426	* Fix ambiguous symbol version for fuse_chan_new.
427	fuse_versionscript included fuse_chan_new in both FUSE_2.4 and
428	FUSE_2.6.  Remove the FUSE_2.4, which is invalid.
429
4302010-09-28  Miklos Szeredi <miklos@szeredi.hu>
431
432	* Fix option escaping for fusermount.  If the "fsname=" option
433	contained a comma then the option parser in fusermount was
434	confused (Novell bugzilla #641480).  Fix by escaping commas when
435	passing them over to fusermount.  Reported by Jan Engelhardt
436
4372010-08-27  Miklos Szeredi <miklos@szeredi.hu>
438
439	* Add NetBSD support.  Patch from Emmanuel Dreyfus
440
4412010-07-12  Miklos Szeredi <miklos@szeredi.hu>
442
443	* libfuse: add buffer interface.  Add a generic buffer interface
444	for use with I/O.  Buffer vectors are supplied and each buffer in
445	the vector may be a memory pointer or a file descriptor.
446
447	* The fuse_reply_fd() interface is converted to using buffers.
448
4492010-06-23  Miklos Szeredi <miklos@szeredi.hu>
450
451	* Make the number of max background requests and congestion
452	threshold tunable.  New options are "max_background" and
453	"congestion_threshold".  Only effective on linux kernel versions
454	2.6.32 or greater.  Patch by Csaba Henk
455
4562010-06-17  Miklos Szeredi <miklos@szeredi.hu>
457
458	* Add fuse_reply_fd() reply function to the low level interface.
459	On linux version 2.6.35 or greater this will use splice() to move
460	data directly from a file descriptor to the fuse device without
461	needing to go though a userspace buffer.  With the
462	FUSE_REPLY_FD_MOVE flag the kernel will attempt to move the data
463	directly into the filesystem's cache.  On earlier kernels it will
464	fall back to an intermediate buffer.  The options
465	"no_splice_write" and "no_splice_move" can be used to disable
466	splicing and moving respectively.
467
4682010-06-15  Miklos Szeredi <miklos@szeredi.hu>
469
470	* Fix out-of-source build.  Patch by Jörg Faschingbauer
471
472	* Add a "nopath" option and flag, indicating that path argument
473	need not be calculated for the following operations: read, write,
474	flush, release, fsync, readdir, releasedir, fsyncdir, ftruncate,
475	fgetattr, lock, ioctl and poll.
476
4772010-05-10  Miklos Szeredi <miklos@szeredi.hu>
478
479	* Remove "chmod root" from install of fusermount.  Reported by
480	Lucas C. Villa Real
481
4822010-04-26  Miklos Szeredi <miklos@szeredi.hu>
483
484	* Released 2.8.4
485
4862010-04-26  Miklos Szeredi <miklos@szeredi.hu>
487
488	* Fix checking for symlinks in umount from /tmp.  Reported by Al
489	Viro
490
491	* Fix umounting if /tmp is a symlink.  Reported by Franco Broi
492
4932010-02-18  Miklos Szeredi <miklos@szeredi.hu>
494
495	* Fix definition of FUSE_OPT_END for C++.  Reported by Tim
496	Bruylants
497
4982010-02-03  Miklos Szeredi <miklos@szeredi.hu>
499
500	* Fix stack alignment for clone()
501
5022010-02-01  Miklos Szeredi <miklos@szeredi.hu>
503
504	* Released 2.8.3
505
5062010-02-01  Miklos Szeredi <miklos@szeredi.hu>
507
508	* Using "--no-canonicalize" with umount(8) conflicts with the race
509	fix, sinceit assumes the supplied path is absolute, while the race
510	fix relies on the path being relative to the current directory.
511	Reported by Tom Rindborg
512
5132010-01-26  Miklos Szeredi <miklos@szeredi.hu>
514
515	* Released 2.8.2
516
5172010-01-21  Miklos Szeredi <miklos@szeredi.hu>
518
519	* Fix race if two "fusermount -u" instances are run in parallel.
520	Reported by Dan Rosenberg
521
522	* Make sure that the path to be unmounted doesn't refer to a
523	symlink
524
5252010-01-14  Miklos Szeredi <miklos@szeredi.hu>
526
527	* Fix compile error on FreeBSD.  Patch by Jay Sullivan
528
5292009-12-17  Miklos Szeredi <miklos@szeredi.hu>
530
531	* Use '--no-canonicalize' option of mount(8) (available in
532	util-linux-ng version 2.17 or greater) to avoid calling
533	readling(2) on the newly mounted filesystem before the mount
534	procedure is finished.  This has caused a deadlock if "audit" was
535	enabled in the kernel.  Also use '--no-canonicalize' for umount to
536	avoid touching the mounted filesystem.
537
5382009-09-11  Miklos Szeredi <miklos@szeredi.hu>
539
540	* Released 2.8.1
541
5422009-08-25  Miklos Szeredi <miklos@szeredi.hu>
543
544	* Fix missing versioned symbol fuse_get_context@FUSE_2.2
545
5462009-08-18  Miklos Szeredi <miklos@szeredi.hu>
547
548	* Released 2.8.0
549
5502009-08-18  Miklos Szeredi <miklos@szeredi.hu>
551
552	* Add missing fuse_session_data to versionscript
553
554	* Make sure all global symbols are prefixed with "fuse_" or "cuse_"
555
5562009-07-16  Miklos Szeredi <miklos@szeredi.hu>
557
558	* Clarify how the protocol version should be negotiated between
559	kernel and userspace.  Notably libfuse didn't correctly handle the
560	case when the supported major versions didn't match
561
562	* Add missing pthread link for libulockmgr.  Patch by  Petr Salinger
563
5642009-07-02  Miklos Szeredi <miklos@szeredi.hu>
565
566	* The context is extended with a 'umask' field.  The umask is sent
567	for mknod, mkdir and create requests by linux kernel version
568	2.6.31 or later, otherwise the umask is set to zero.  Also
569	introduce a new feature flag: FUSE_CAP_DONT_MASK.  If the kernel
570	supports this feature, then this flag will be set in conn->capable
571	in the ->init() method.  If the filesystem sets this flag in in
572	conn->want, then the create modes will not be masked.
573
574	* Add low level interfaces for lookup cache and attribute
575	invalidation.  This feature is available in linux kernels 2.6.31
576	or later.  Patch by John Muir
577
578	* Kernel interface version is now 7.12
579
580	* fusermount: Do not silently ignore command line arguments.
581	Patch by Sebastian Harl
582
5832009-06-19  Miklos Szeredi <miklos@szeredi.hu>
584
585	* Released 2.8.0-pre3
586
5872009-06-19  Miklos Szeredi <miklos@szeredi.hu>
588
589	* Add fuse_getgroups (high level lib) and fuse_req_getgroups (low
590	level lib) functions to query the supplementary group IDs for the
591	current request.  Currently this is implemented on Linux by
592	reading from the /proc filesystem.
593
5942009-06-18  Miklos Szeredi <miklos@szeredi.hu>
595
596	* Add "noforget" option to high level lib to prevent ESTALE errors
597	on NFS exported filesystems.  This result in paths being cached
598	forever, resulting in ever growing memory usage.  Use with care.
599
600	* Add "no_remote_lock" option to disable remote file locking even
601	if the filesystem implements it.  With this option locking
602	primitives (flock, lockf, fcntl(F_SETLK)) will still work, but
603	will ignore remotely locked files.
604
605	* CUSE patches from Tejun Heo:
606
607	* Unrestricted ioctl support left some debris.  Clean them up:
608	  o No reason to pass around pointer to flags.  Pass flags directly.
609	  o Clean up comment and prototype parameter names.
610	  o fuse_lib_ioctl() didn't reply when get_path() failed.  Fix it.
611	  o Remove unused variables {in|out}_iov from fuse_lib_ioctl().
612
613	* Add fuse_reply_ioctl_iov()
614
615	* Move fuse_session, fuse_req and fuse_ll definitions to fuse_i.h
616	and make send_reply_iov() and fuse_setup_common() global (also in
617	fuse_i.h).  These will be used by CUSE support.
618
619	* Restructure fuse_ll_process()
620
621	* Implement libfuse side of CUSE support.  CUSE uses subset of FUSE
622	operations as dir operations don't make sense for CUSE where one
623	instance implements single character device.
624
625	CUSE support comes with its own cuse_lowevel_ops and related
626	initialization and helper functions.  Except for initialization, it
627	usage is basically identical to FUSE.
628
629	This patch also adds example/cusexmp.c which can create a character
630	device with name and device number specified on command line.  The
631	created device itself is pretty boring.  It's a bit bucket supporting
632	read, write and access via ioctl.
633
6342009-06-16  Miklos Szeredi <miklos@szeredi.hu>
635
636	* Add missing fuse_reply_bmap to versionscript.  Debian
637	Bug#531329.  Reported by Goswin Brederlow
638
6392009-05-27  Miklos Szeredi <miklos@szeredi.hu>
640
641	* Don't call forget_node() if the lookup was negative and write()
642	for the reply returned ENOENT.  Reported by John Haxby
643
6442009-05-25  Miklos Szeredi <miklos@szeredi.hu>
645
646	* Add FUSE_CAP_EXPORT_SUPPORT to fuse_common.h
647
6482009-05-08  Miklos Szeredi <miklos@szeredi.hu>
649
650	* Fix missing newlines in some printfs
651
652	* Fix 'make install-strip'.  Reported by Dominick Layfield
653
6542009-01-05  Miklos Szeredi <miklos@szeredi.hu>
655
656	* Released 2.8.0-pre2
657
6582008-12-08  Miklos Szeredi <miklos@szeredi.hu>
659
660	* Implement poll support.  Patch by Tejun Heo
661
662	* Add missing setattr flags to <fuse_lowlevel.h>.
663
664	* Only pass valid flags to ->setattr().
665
6662008-12-05  Miklos Szeredi <miklos@szeredi.hu>
667
668	* Implement ioctl support.  On high level interface only
669	"restricted" ioctls are supported (which are defined with the
670	_IO(), _IOR(), _IOW() or _IOWR() macros).  Unrestricted ioctls
671	will only be allwed to CUSE (Character Device in Userspace)
672	servers.  Patch by Tejun Heo
673
6742008-11-28  Miklos Szeredi <miklos@szeredi.hu>
675
676	* If open sets fi->nonseekable, libfuse will tell the kernel that
677	the file is not seekable.  Patch by Tejun Heo
678
6792008-11-19  Miklos Szeredi <miklos@szeredi.hu>
680
681	* lowlevel lib: fix deadlock if fuse_reply_* is called from the
682	interrupt handling function.  Reported by Tero Marttila
683
6842008-10-16  Miklos Szeredi <miklos@szeredi.hu>
685
686	* Allow commas in options to be escaped with a backslash
687
688	* Add new function: fuse_opt_add_opt_escaped()
689
690	* Add missing fuse_reply_bmap() to the version script
691
6922008-10-14  Miklos Szeredi <miklos@szeredi.hu>
693
694	* Pass current file flags to read and write operations
695
6962008-07-24  Miklos Szeredi <miklos@szeredi.hu>
697
698	* Clean up debug output in highlevel lib
699
7002008-07-10  Miklos Szeredi <miklos@szeredi.hu>
701
702	* Released 2.8.0-pre1
703
7042008-06-27  Miklos Szeredi <miklos@szeredi.hu>
705
706	* Fix handling of (no)suid and (no)dev options if filesystem is
707	mounted from /etc/fstab or via mount(8).  Reported by Jan Ondrej.
708
709	* Skip calling mount(8) if /etc/mtab doesn't exist or if it's on a
710	read-only filesystem.  This works around issues with certain mount
711	implementations.  Reported by Szabolcs Szakacsits.
712
7132008-06-16  Miklos Szeredi <miklos@szeredi.hu>
714
715	* Remove fuse kernel module sources.  Linux 2.6.27 will support
716	NFS exporting.
717
7182008-06-10  Miklos Szeredi <miklos@szeredi.hu>
719
720	* Fix theoretical infinite loops in libfuse.  Reported by Szabolcs
721	Szakacsits
722
723	* Fix missing <sys/param.h> include for PATH_MAX.  Reported by
724	Szabolcs Szakacsits
725
7262008-05-23  Miklos Szeredi <miklos@szeredi.hu>
727
728	* Fix mounting over symlink.  Reported by Szabolcs Szakacsits
729
7302008-05-09  Miklos Szeredi <miklos@szeredi.hu>
731
732	* Don't allow bigger than 4kB writes by default on 2.6.26 and
733	later kernels, so that filesystems not expecting this are not
734	broken on a kernel upgrade.  Provide a 'big_writes' mount option
735	to enable this feature.  In future API revisions this may become
736	the default.
737
7382008-04-09  Miklos Szeredi <miklos@szeredi.hu>
739
740	* Update warning message for missing newline at end of fuse.conf
741
742	* Update debug message for successful operation to not include the
743	string "error:"
744
7452008-04-08  Miklos Szeredi <miklos@szeredi.hu>
746
747	* Update error message for missing mountpoint parameter.  Reported
748	by Allen Pulsifer
749
7502008-04-04  Miklos Szeredi <miklos@szeredi.hu>
751
752	* Print library version information to debug output
753
754	* Highlevel lib: don't limit paths to 4095 characters
755
7562008-03-25  Miklos Szeredi <miklos@szeredi.hu>
757
758	* Fix memory leaks on mount.  Patch by Szabolcs Szakacsits
759
7602008-03-19  Miklos Szeredi <miklos@szeredi.hu>
761
762	* Fix missing pthread_mutex_destroy in error path of
763	fuse_lib_opendir().  Patch by Szabolcs Szakacsits
764
7652008-03-07  Miklos Szeredi <miklos@szeredi.hu>
766
767	* Add queuing on contention to per-node lock algorithm, to avoid
768	starvation.
769
770	* Only enable cancelation when reading a request, otherwise
771	cancellation could happen with a mutex held, which could hang the
772	process on umount
773
7742008-02-08  Miklos Szeredi <miklos@szeredi.hu>
775
776	* Block SIGCHLD when executing mount and umount
777
778	* fusexmp_fh: avoid unnecessary seeking in readdir
779
780	* Update kernel interface to 7.9:
781
782	* Support receiving file handle from kernel in GETATTR request
783
784	* Allow operations with a NULL path argument, if the filesystem
785	supports it
786
787	* Add support atomic open(O_TRUNC)
788
789	* Support the st_blksize field in struct stat
790
791	* If the "FUSE_THREAD_STACK" environment is set, initialize the
792	stack size of threads by this value.  Patch by Florin Malita
793
794	* Add per-node locking, instead of a global tree lock to protect
795	the path from changing during operations.  Original patch by
796	Rodrigo Castro
797
7982008-02-03  Csaba Henk <csaba.henk@creo.hu>
799
800	* lib/mount_bsd.c:
801	- string formatting fixes
802	- exit if mounting has failed
803	  (in FreeBSD a mount failure is not critical per se, as the daemon
804	  still could be mounted externally, but waiting for such an event
805	  is more confusing than fruitful)
806	- ditch the kvm(8) stuff and simply use forced unmount which just
807	  won't block
808	- prettify option specifications
809	- add "-onosync_unmount" kernel option
810
8112008-01-07  Csaba Henk <csaba.henk@creo.hu>
812
813	* lib/mount_bsd.c:
814	- refine device closing in a race-free way
815	- add support for "-osubtype" on FreeBSD
816
817	* makeconf.sh: make it work under FreeBSD
818
8192008-01-03  Csaba Henk <csaba.henk@creo.hu>
820
821	* lib/mount_bsd.c: close device before unmount
822	(cf. lib/mount.c rev. 1.43) and fix some warnings
823
8242007-12-23  Miklos Szeredi <miklos@szeredi.hu>
825
826	* Fix './configure --disable-static'.  Patch from Ismail Dönmez
827
8282007-12-17  Miklos Szeredi <miklos@szeredi.hu>
829
830	* Released 2.7.2
831
8322007-12-12  Miklos Szeredi <miklos@szeredi.hu>
833
834	* Fix kernel module compile for 2.6.24
835
836	* Invalidate attributes of parent directory after create(), since
837	the modification time changes.  Invalidate attributes on rename,
838	since some filesystems may update st_ctime.  Reported by Szabolcs
839	Szakacsits
840
841	* Fix NFS exporting to handle 64bit node IDs
842
843	* Disable old symbol versions if __UCLIBC__ is defined.  If a
844	symbol in a library has multiple versions, the runtime linker in
845	uClibc seems to randomly choose between them.
846
847	* Remove erroneous 'fuse_opt_insert_arg@FUSE_2_5' from
848	fuse_version_script.  fuse_opt_free_args() was added in fuse-2.6.
849
850	* Close fuse device file descriptor before calling umount(),
851	preventing a deadlock when umount is synchronous.  Reported by
852	Szabolcs Szakacsits
853
8542007-11-12  Miklos Szeredi <miklos@szeredi.hu>
855
856	* 'fusermount -u' did not umount the filesystem if /etc/mtab was a
857	symlink.  This bug was introduced in 2.7.1 by "Don't call
858	/bin/[u]mount if /etc/mtab is a symlink".  Found by robertsong.
859
8602007-10-16  Miklos Szeredi <miklos@szeredi.hu>
861
862	* Released 2.7.1
863
8642007-10-16  Miklos Szeredi <miklos@szeredi.hu>
865
866	* Clarify licence version to be "LGPLv2" for the library
867
868	* kernel fixes:
869
870	* After mount set nlink attribute for the root inode to 1
871
872	* Fix wake up of task waiting for a reserved request
873
874	* Fix allowing setattr, listxattr and statfs for other users
875
8762007-09-18  Miklos Szeredi <miklos@szeredi.hu>
877
878	* Add missing context initialization in fuse_fs_chmod().  Bug
879	found by "iohead"
880
881	* Fix kernel module compilation for 2.6.23.  Based on patch by
882	Marian Marinov
883
8842007-09-04  Philippe Elie  <phil.el@wanadoo.fr>
885
886	* lib/fuse_lowlevel.c: fix a fuse_req leak in do_forget()
887
8882007-07-31  Miklos Szeredi <miklos@szeredi.hu>
889
890	* Work around hotplug issue, that it calls filesystem with file
891	descriptors 0, 1 and 2 not open.  Tracked down by Leif Johnson
892
8932007-07-25  Miklos Szeredi <miklos@szeredi.hu>
894
895	* Don't call /bin/[u]mount if /etc/mtab is a symlink.  Reported by
896	Tomas M
897
898	* Also don't touch /etc/mtab if it is within the mounted
899	filesystem.  Suggested by Jeffrey Law
900
9012007-07-12  Miklos Szeredi <miklos@szeredi.hu>
902
903	* Reset args->argc in fuse_opt_free_args().  Patch by Lucas
904	C. Villa Real
905
9062007-07-02  Miklos Szeredi <miklos@szeredi.hu>
907
908	* Released 2.7.0
909
9102007-07-02  Miklos Szeredi <miklos@szeredi.hu>
911
912	* Accept a NULL "op" for fuse_main(), etc.  This is useful if
913	filesystem is only invoking fuse to print a help message, or
914	version.  Fixes RedHat bugzilla #217343
915
9162007-06-22  Miklos Szeredi <miklos@szeredi.hu>
917
918	* lib: fix locking when loading a filesystem module
919
9202007-06-21  Miklos Szeredi <miklos@szeredi.hu>
921
922	* Add fs subtype support to mount.fuse
923
9242007-06-20  Miklos Szeredi <miklos@szeredi.hu>
925
926	* Add fs subtype support to libfuse and fusermount
927
9282007-06-19  Miklos Szeredi <miklos@szeredi.hu>
929
930	* kernel: sync with mainline (2.6.22)
931
9322007-06-18  Miklos Szeredi <miklos@szeredi.hu>
933
934	* Send debug output to stderr instead of stdout.  Patch by Jan
935	Engelhardt
936
9372007-06-03  Miklos Szeredi <miklos@szeredi.hu>
938
939	* libulockmgr: Work around a kernel bug in recv(), causing it to
940	sometimes return zero even if data was available on the socket.
941
9422007-05-29  Miklos Szeredi <miklos@szeredi.hu>
943
944	* lib: optimization: store parent pointer in node instead of
945	parent id
946
9472007-05-25  Miklos Szeredi <miklos@szeredi.hu>
948
949	* lib: don't create new thread for each FORGET request.  FORGET
950	messages sometimes caused so many threads to be created, that
951	process virtual memory space ran out.  Reported by Chris AtLee
952
9532007-05-24  Miklos Szeredi <miklos@szeredi.hu>
954
955	* lib: fix memory leak on thread creation failure in multithreaded
956	event loop.  Found by Chris AtLee
957
9582007-05-23  Miklos Szeredi <miklos@szeredi.hu>
959
960	* lowlevel lib: add fuse_reply_iov function, which is similar to
961	fuse_reply_buf, but accepts a vector of buffers.  Patch by Roger
962	Willcocks
963
9642007-05-21  Miklos Szeredi <miklos@szeredi.hu>
965
966	* Fix Oops or error if a regular file is created with mknod(2) on
967	a fuse filesystem.  Kernels 2.6.18 onward are affected.  Thanks to
968	J. Cameijo Cerdeira for the report
969
9702007-05-11  Csaba Henk <csaba.henk@creo.hu>
971
972	* libfuse: fix return value of fuse_loop()/fuse_loop_mt().
973	Error reported by Csaba Henk, fix by Miklos Szeredi
974
975	* libfuse: fix unlock in flush
976
977	* libfuse: do unlocking on RELEASE+FLUSH
978
9792007-05-03  Miklos Szeredi <miklos@szeredi.hu>
980
981	* Released 2.7.0-rc1
982
9832007-05-02  Miklos Szeredi <miklos@szeredi.hu>
984
985	* kernel: sync with mainline:
986
987	* Use invalidate_mapping_pages() if available
988
989	* Fix BUG when invalid file type is supplied in mount. Patch by
990	Timo Savola
991
9922007-04-27  Miklos Szeredi <miklos@szeredi.hu>
993
994	* libfuse: call umount(8) directly instead of fusermount if
995	possible
996
997	* Clean up init script, make it LSB compliant
998
9992007-04-26  Miklos Szeredi <miklos@szeredi.hu>
1000
1001	* In multithreaded loop, use a semaphore instead of SIGHUP to wake
1002	up the main thread on umount.  This is more elegant, and works
1003	even if signals are blocked.
1004
10052007-04-25  Miklos Szeredi <miklos@szeredi.hu>
1006
1007	* Improve mounting support in libfuse:
1008	 - check non-empty mountpoint
1009	 - only fall back to fusermount when necessary
1010
10112007-04-23  Miklos Szeredi <miklos@szeredi.hu>
1012
1013	* Don't chdir to "/" in foreground mode, it causes more trouble
1014	than it's worth
1015
10162007-04-18  Miklos Szeredi <miklos@szeredi.hu>
1017
1018	* Replace utils/mount.fuse "sh" script with a "C" program
1019
10202007-04-15  Miklos Szeredi <miklos@szeredi.hu>
1021
1022	* Add -lulockmgr to compilation comment in fusexmp_fh.c
1023
10242007-04-05  Miklos Szeredi <miklos@szeredi.hu>
1025
1026	* Check for iconv.  Patch by Csaba Henk
1027
1028	* Add direct umounting
1029
1030	* Use "fusectl" as the device for the fusectl filesystem.  Debian
1031	Bug#417945.  Reported by Laurent Bonnaud
1032
10332007-04-01  Csaba Henk <csaba.henk@creo.hu>
1034
1035	* Fix some FreeBSD related macros.
1036
10372007-03-30  Miklos Szeredi <miklos@szeredi.hu>
1038
1039	* Add support for direct mounting by libfuse.  Fall back on
1040	calling fusermount if it doesn't work
1041
10422007-03-14  Miklos Szeredi <miklos@szeredi.hu>
1043
1044	* Released 2.7.0-pre1
1045
10462007-03-05  Miklos Szeredi <miklos@szeredi.hu>
1047
1048	* Correctly handle O_APPEND in direct IO mode.  Reported by Greg
1049	Bruno
1050
1051	* mount.fuse should use /bin/bash.  Debian Bug#413403.  Reported
1052	by Thomas Weinbrenner
1053
10542007-02-26  Miklos Szeredi <miklos@szeredi.hu>
1055
1056	* Fix detection of installed fuse in init script.  Reported and
1057	fix suggested by Davide Canova
1058
10592007-02-05  Miklos Szeredi <miklos@szeredi.hu>
1060
1061	* Fix 2.6.9 RHEL kernels, which have compatibility mutex.h, but
1062	don't define mutex_destroy(), bummer.  Patch from Phil Schwan
1063
10642007-02-04  Miklos Szeredi <miklos@szeredi.hu>
1065
1066	* Compile fuseblk for kernels which don't have an option to turn
1067	off the block layer (CONFIG_BLOCK).  Reported by Szakacsits
1068	Szabolcs
1069
10702007-02-03  Miklos Szeredi <miklos@szeredi.hu>
1071
1072	* Add filesystem stacking support to high level API.  Filesystem
1073	modules can be built into libfuse or loaded from shared object
1074	(.so) files
1075
1076	* Add 'subdir' and 'iconv' built in modules
1077
1078	* lib/fuse.c: Fix locking for the reply code in create and open
1079
10802007-02-02  Miklos Szeredi <miklos@szeredi.hu>
1081
1082	* kernel: make it compile on "strange" kernels which have emulated
1083	mutexes via <linux/mutex.h> but no i_mutex.  Reported by Tomasz
1084	Mateja
1085
10862007-01-28  Miklos Szeredi <miklos@szeredi.hu>
1087
1088	* kernel: fix BUG in control filesystem if it is umounted and
1089	mounted again, while some fuse filesystems are present.
1090	Bugreport from Florent Mertens
1091
1092	* kernel: sync with mainline, support 2.6.20
1093
10942007-01-22  Miklos Szeredi <miklos@szeredi.hu>
1095
1096	* lib/Makefile.am: actually link libfuse against libfuse_libs
1097
10982007-01-19  Miklos Szeredi <miklos@szeredi.hu>
1099
1100	* Build fix for 2.6.16 vanila and 2.6.15 FC5 kernels.  Patch from
1101	Ian Abbott
1102
11032007-01-18  Miklos Szeredi <miklos@szeredi.hu>
1104
1105	* Fix abort in fuse_new() compatibility API for opts == NULL case.
1106	Novell bugzilla #233870.  Patch from Takashi Iwai.
1107
11082007-01-13  Miklos Szeredi <miklos@szeredi.hu>
1109
1110	* Fix option parsing in mount.fuse.  Patch from Jens M. Noedler
1111
11122007-01-02  Miklos Szeredi <miklos@szeredi.hu>
1113
1114	* Fix unaligned access in file desctriptor passing in libfuse,
1115	fusermount and ulockmgr.  Debian bug ID: 404904.  Reported and
1116	tested by Sebastian Fontius
1117
11182006-12-16  Miklos Szeredi <miklos@szeredi.hu>
1119
1120	* kernel: don't keep unreferenced inodes in the icache.
1121
11222006-12-15  Miklos Szeredi <miklos@szeredi.hu>
1123
1124	* fusermount: Fix detection of fuseblk.  Reported by Szakacsits
1125	Szabolcs
1126
1127	* lib: Fix use after free in fuse_flush().  Reported by Ron
1128	Lindman
1129
11302006-12-10  Miklos Szeredi <miklos@szeredi.hu>
1131
1132	* mount.fuse: add "setuid=USER" option which does a "su - USER"
1133	for the filesystem
1134
1135	* fusermount: use "/bin/mount -f" to add entry to /etc/mtab, and
1136	"/bin/umount" to remove entry from /etc/mtab.  This gets rid of
1137	the ugly code dealing with mtab, as well as a possible race
1138	between fusermount and mount trying to modify /etc/mtab at the
1139	same time
1140
1141	* Fix "buffer size too small: 4" warning for users of the
1142	fuse_loop_mt_proc() function.
1143
11442006-12-04  Miklos Szeredi <miklos@szeredi.hu>
1145
1146	* Fix warnings with gcc-4.1 on 64bit archs.  Report from
1147	Harshavardhana
1148
1149	* Add extra warning options, and fix resulting warnings
1150
1151	* Really fix fuse_teardown problem
1152
11532006-12-02  Miklos Szeredi <miklos@szeredi.hu>
1154
1155	* Add -lrt to fuse.pc (if needed) to fix static linking against
1156	libfuse.  Reported by Szakacsits Szabolcs
1157
11582006-12-01  Miklos Szeredi <miklos@szeredi.hu>
1159
1160	* Released 2.6.1
1161
11622006-11-30  Miklos Szeredi <miklos@szeredi.hu>
1163
1164	* Fix API version 21 and 22 compatibility for fuse_teardown.
1165	Reported by Bgs
1166
11672006-11-29  Miklos Szeredi <miklos@szeredi.hu>
1168
1169	* fusermount: Print a more helpful message in case the kernel
1170	doesn't support the 'fuseblk' filesystem type.  This has been
1171	biting ntfs-3g users.  Reported by Yura Pakhuchiy
1172
1173	* kernel: fix build problem for "make -C ...".  Reported by
1174	Stephen Bryant
1175
11762006-11-19  Miklos Szeredi <miklos@szeredi.hu>
1177
1178	* Fix bug in certain error paths of lookup routines.  The request
1179	object was reused for sending FORGET, which is illegal.  This bug
1180	could cause an Oops in linux-2.6.18 or in fuse-2.6.0, and might
1181	silently corrupt memory in earlier versions.  Report and test
1182	program by Russ Cox
1183
11842006-11-11  Miklos Szeredi <miklos@szeredi.hu>
1185
1186	* Print an error if an incompatible kernel interface version is
1187	detected in INIT.  This will only show if filesystem is started
1188	with -d or -f
1189
1190	* Fix order of fuse_destroy()/fuse_unmount() in error cleanup of
1191	fuse_setup_common().  Reported by Szakacsits Szabolcs
1192
11932006-11-06  Miklos Szeredi <miklos@szeredi.hu>
1194
1195	* Fix recursive locking in fuse_create().  Thanks to Takuya
1196	Ishibashi for the bug report
1197
11982006-10-28  Miklos Szeredi <miklos@szeredi.hu>
1199
1200	* Fix automake problem.  Patch from Nix
1201
12022006-10-26  Miklos Szeredi <miklos@szeredi.hu>
1203
1204	* Fix mount.fuse to use /bin/sh instead of /bin/bash, which is not
1205	always available on embedded systems.  Patch from Paul Smith
1206
1207	* Fix util/Makefile.am, so that failure to run update-rc.d or
1208	device creation doesn't cause make to fail.  Reported by Paul
1209	Smith
1210
12112006-10-21  Miklos Szeredi <miklos@szeredi.hu>
1212
1213	* Released 2.6.0
1214
12152006-10-18  Miklos Szeredi <miklos@szeredi.hu>
1216
1217	* fusermount: don't try to create a lock file if /etc/mtab is a
1218	symlink.  Report and patch from Alexei Sheplyakov (debian bug
1219	#393693)
1220
12212006-10-17  Miklos Szeredi <miklos@szeredi.hu>
1222
1223	* Minor changes, sync with mainline tree
1224
12252006-10-16  Miklos Szeredi <miklos@szeredi.hu>
1226
1227	* Released 2.6.0-rc3
1228
12292006-10-15  Miklos Szeredi <miklos@szeredi.hu>
1230
1231	* kernel: cleanups
1232
12332006-10-13  Miklos Szeredi <miklos@szeredi.hu>
1234
1235	* kernel: Fix compilation on patched 2.6.18 (fc6) and 2.6.19.
1236	Report from David Shaw
1237
1238	* lib: Fix lost error on renaming a file. Report from David Shaw
1239
1240	* lib: Fix lost error on hiding open files (renaming to
1241	.fuse_hiddenXXXX)
1242
1243	* kernel: Fix a rare hang on SMP/32bit on heavy filesystem
1244	activity.  The cause of the bug was that some calls to
1245	i_size_write() were not protected by a lock, and hence
1246	i_size_seqcount could become corrupted.  This caused subsequent
1247	calls to i_size_read() to spin forever.  This is a long standing
1248	bug was probably introduced in version 2.2, and thought to be
1249	related to NFS exporting (it's not).  It was reported by various
1250	people, but Dana Henriksen has finally helped me to track it down,
1251	so big thanks to him
1252
1253	* kernel: Protect against truncation of a swapfile
1254
12552006-10-10  Miklos Szeredi <miklos@szeredi.hu>
1256
1257	* kernel: Check for signature of super_operations->umount_begin().
1258	Ubuntu kernel 2.6.17 seems to use the new signature found in
1259	2.6.18.  Thanks to Florent Mertens for the report
1260
12612006-10-08  Miklos Szeredi <miklos@szeredi.hu>
1262
1263	* Make sure inode numers wrap around at 2^32.  This is needed on
1264	dual 64bit/32bit architectures, because 32bit applications using
1265	the non-largefile interface would otherwise break (EOVERFLOW error
1266	would be returned by the stat() system call family)
1267
1268	* ulockmgr: handle the case, when a locking operation fails
1269	because no more file desctriptors are available in
1270	ulockmgr_server.  Also work around a Linux kernel bug (known to
1271	exist for all Linux kernel versions <= 2.6.18) which may cause
1272	sent file descriptors to be lost in the above case
1273
1274	* ulockmgr: optimize file descriptor use
1275
1276	* restore needed cpp flags to util/Makefile.am
1277
1278	* Install udev rules as 99-fuse.rules instead of 60-fuse.rules
1279
1280	* Minor clean up of udev rules
1281
1282	* Add a synchronous DESTROY message to kernel interface.  This is
1283	invoked from umount, when the final instance of the filesystem is
1284	released.  It is only sent for filesystems mounted with the
1285	'blkdev' option for security reasons.
1286
1287	* If the DESTROY message is received, call the filesystem's
1288	->destroy() method.  In this case it's not called from session
1289	destruction as it would be otherwise.
1290
12912006-10-01  Miklos Szeredi <miklos@szeredi.hu>
1292
1293	* Released 2.6.0-rc2
1294
12952006-10-01  Miklos Szeredi <miklos@szeredi.hu>
1296
1297	* Add support for FLUSH+RELEASE operation for FreeBSD.  Original
1298	patch by Csaba Henk
1299
1300	* Add init script to insert fuse module and mount the control
1301	filesystem.  The script is installed as /etc/init.d/fuse and on
1302	debian based systems (where update-rc.d is available) symlinks
1303	from /etc/rc*.d/ are also installed.
1304
1305	* Include '#define FUSE_USE_VERSION=XX' into examples so they
1306	become more self contained.
1307
13082006-09-30  Miklos Szeredi <miklos@szeredi.hu>
1309
1310	* API changes:
1311
1312	* Move lock_owner from a separate argument into fuse_file_info
1313
1314	* Add a flag to fuse_file_info indicating (1) a highlevel lock
1315	operation (unlock all) was initiated by a flush, (2) a lowlevel
1316	release operation should perform a flush as well.
1317
1318	* fusermount: revert modprobe change (2006-08-18) since it
1319	doesn't work reliably with udev
1320
1321	* Add support for block device backed filesystems.  This mode is
1322	selected with the 'blkdev' option, which is privileged.
1323
1324	* Add support for the bmap (FIBMAP ioctl) operation on block
1325	device backed filesystems.  This allows swapon and lilo to work on
1326	such filesystems.
1327
1328	* kernel changes:
1329
1330	* Drop support for kernels earlier than 2.6.9.  Kernel module from
1331	previous (2.5.x) release can be used with library from this
1332	release
1333
1334	* In fuse_dentry_revalidate() use dget_parent() instead of
1335	dereferencing d_parent, since there's no protection against parent
1336	changing and going away
1337
1338	* Protect nlookup from concurrent updates
1339
1340	* In lookup if a directory alias exists but is unused,
1341	then get rid of it, otherwise return -EBUSY.
1342
1343	* In mkdir if a directory alias exists, return success, but leave
1344	dentry negative.  In reality this could happen if a remote rename
1345	immediately followed the mkdir.
1346
1347	* Don't BUG in fuse_iget() if multiple retries are needed to get a
1348	good inode.  This could happen if several lookups are racing for
1349	the same inode.
1350
13512006-09-29  Miklos Szeredi <miklos@szeredi.hu>
1352
1353	* Fix compilation on 2.6.9.  Report from Troy Ayers
1354
13552006-09-27  Miklos Szeredi <miklos@szeredi.hu>
1356
1357	* Fix Oops in fuse_readpages().  Reported by David Shaw
1358
13592006-09-24  Csaba Henk <csaba.henk@creo.hu>
1360
1361	* Add support for nanosec times on FreeBSD
1362
1363	* Fix FreeBSD compatibility issues
1364
13652006-09-23  Miklos Szeredi <miklos@szeredi.hu>
1366
1367	* Fix one more compatibility bug.  Thanks to Ricardo Correia
1368
1369	* Fix utimens compilation with uClibc.  Patch from Jamie Guinan
1370
13712006-09-22  Miklos Szeredi <miklos@szeredi.hu>
1372
1373	* Fixed several compatibility bugs in low level interface.
1374	Reported by Ricardo Correia
1375
1376	* Add workaround for ARM caching bug
1377
13782006-09-16  Miklos Szeredi <miklos@szeredi.hu>
1379
1380	* Rename new utimes() method to more logical utimens()
1381
13822006-09-14  Miklos Szeredi <miklos@szeredi.hu>
1383
1384	* Fuse tried to unlink already unlinked hidden files.  Bug
1385	reported by Milan Svoboda
1386
13872006-09-10  Miklos Szeredi <miklos@szeredi.hu>
1388
1389	* Released 2.6.0-rc1
1390
13912006-09-10  Miklos Szeredi <miklos@szeredi.hu>
1392
1393	* kernel: Fix unlock on close for kernels < 2.6.18
1394
1395	* Add ulockmgr library & server.  This can be used for handling
1396	file locking requests either directly from libfuse or over a
1397	network, etc.  This first version is not optimized and the number
1398	of file descriptors it uses may get out of hand
1399
14002006-09-07  Miklos Szeredi <miklos@szeredi.hu>
1401
1402	* lib: Add interrupt support to high level library, which may be
1403	enabled with the 'intr' mount option.
1404
1405	* When an operation is interrupted the thread handling that
1406	operation will receive SIGUSR1 (or other signal specified with the
1407	'intr_signal=N' option).  The library installs a no-op signal
1408	handler for this signal, unless there's already a handler
1409	installed.
1410
1411	* The filesystem may query interrupt status (regardless of 'intr')
1412	with the fuse_interrupted() function.
1413
1414	* mount.fuse: initialize $HOME if not set.  Report from Sven Goldt
1415
14162006-09-03  Miklos Szeredi <miklos@szeredi.hu>
1417
1418	* lib: Multithreaded loop now allows unlimited number of threads.
1419	This is needed for locking operations which may block
1420	indefinitely.  Also the kernel now doesn't limit the number of
1421	outstanding requests so the library shouldn't do so either.
1422
14232006-09-01  Miklos Szeredi <miklos@szeredi.hu>
1424
1425	* Fix recursive lock bug in interrupt handling
1426
1427	* Add utimes() method to highlevel interface, which supports
1428	setting times with nanosecond resolution
1429
14302006-08-18  Miklos Szeredi <miklos@szeredi.hu>
1431
1432	* kernel: fix page leak if fuse_readpages() failed in it's
1433	initialization.  Bug found and original patch from Alexander
1434	Zarochentsev
1435
1436	* For linux kernels >=2.6.18 (2.6.19 if using the fuse module from
1437	the kernel tree) the statfs method will receive the path within
1438	the filesystem on which the stat(v)fs syscall was called
1439
1440	* fusermount: try to modprobe fuse module if invoked by root and
1441	unable to open device.  This is needed with udev, since the device
1442	node will be created only when the module is inserted, hence
1443	module autoloading won't work.  Reported by Szakacsits Szabolcs
1444
14452006-07-30  Miklos Szeredi <miklos@szeredi.hu>
1446
1447	* fusermount: if selinux is active, restore the original file's
1448	security context in unmount_rename().  Redhat bugzilla id 188561.
1449	Patch from Yves Perrenoud
1450
1451	* Add POSIX file locking operation to high level library
1452
1453	* Initialize context for unlink of hidden files on umount.  Bug
1454	reported by Tim Stoakes
1455
14562006-07-14  Miklos Szeredi <miklos@szeredi.hu>
1457
1458	* Multiple release() calls can race with each other, resulting in
1459	the hidden file being deleted before the last release finishes.
1460	Bug found and patch tested by Mark Huijgen
1461
14622006-07-05  Miklos Szeredi <miklos@szeredi.hu>
1463
1464	* fusermount: if /dev/fuse doesn't exist, suggest modprobing fuse;
1465	this makes sense on systems using udev.  Reported by Szakacsits
1466	Szabolcs
1467
14682006-06-29  Miklos Szeredi <miklos@szeredi.hu>
1469
1470	* Released 2.6.0-pre3
1471
14722006-06-29  Miklos Szeredi <miklos@szeredi.hu>
1473
1474	* Support in kernel module for file locking and interruption.  The
1475	same functionality is available in official kernels >= 2.6.18
1476
14772006-06-28  Miklos Szeredi <miklos@szeredi.hu>
1478
1479	* Add POSIX file locking support
1480
1481	* Add request interruption
1482
14832006-06-06  Miklos Szeredi <miklos@szeredi.hu>
1484
1485	* Add missing pthread_rwlock_destroy().  Patch from Remy Blank
1486
14872006-06-05  Remy Blank <remy.blank@pobox.com>
1488
1489	* lib: canonicalize mount point in fuse_helper_opt_proc() so that
1490	unmounting succeeds even if mount point was relative.
1491
14922006-06-04  Csaba Henk <csaba.henk@creo.hu>
1493
1494	* lib: fix emergency umount in helper.c when malloc fails.
1495	(The way it was done would end up in a segfault.)
1496
14972006-06-01  Csaba Henk <csaba.henk@creo.hu>
1498
1499	* lib: adjust threading related compiler flags.
1500	Switch to "-pthread" from "-lpthread" as that's the preferred
1501	one on several platforms. Consulted with Terrence Cole and
1502	Miklos Szeredi
1503
15042006-05-08  Miklos Szeredi <miklos@szeredi.hu>
1505
1506	* lib: search fusermount in installation directory (bindir) as
1507	well as in PATH.
1508
15092006-05-03  Miklos Szeredi <miklos@szeredi.hu>
1510
1511	* lib: fix compilation if CLOCK_MONOTONIC is not defined.
1512	Reported by Christian Magnusson
1513
15142006-04-23  Csaba Henk <csaba.henk@creo.hu>
1515
1516	* lib: make FreeBSD mount routine recognize if kernel features
1517        backgrounded init and if it does, run the mount util in foreground
1518        (similarly to Linux)
1519
15202006-04-21  Miklos Szeredi <miklos@szeredi.hu>
1521
1522	* kernel: fix fput deadlock fix, the lockless solution could lead
1523	to "VFS: busy inodes after umount..."
1524
1525	* kernel: fix race between checking and setting file->private_data
1526	for the device.  Found by Al Viro
1527
15282006-04-11  Miklos Szeredi <miklos@szeredi.hu>
1529
1530	* kernel: remove request pool, instead allocate requests on
1531	demand.  Account the number of background requests, and if they go
1532	over a limit, block the allocation of new requests.
1533
1534	* kernel: fix deadlock if backgrounded request holds the last
1535	reference to the super block
1536
1537	* kernel: don't use fuse_reset_request() during direct I/O
1538
15392006-04-06  Csaba Henk <csaba.henk@creo.hu>
1540
1541	* lib: Let FreeBSD mount option parsing routine recognize "no"
1542	prefixes for FUSE specific options as well
1543
15442006-04-01  Miklos Szeredi <miklos@szeredi.hu>
1545
1546	* lib: Add missing rwlock initialization.  Patch by Ryan Bradetich
1547
15482006-03-17  Miklos Szeredi <miklos@szeredi.hu>
1549
1550	* API changes:
1551
1552	* fuse_main(), fuse_setup() and fuse_new() have an additionl
1553	user_data parameter
1554
1555	* fuse_mount() returns a 'struct fuse_chan' pointer instead of a
1556	file descriptor
1557
1558	* fuse_unmount() receives a 'struct fuse_chan' pointer.  It
1559	destroys the given channel
1560
1561	* fuse_teardown() no longer has a file descriptor parameter
1562
1563	* new exported functions: fuse_session_remove_chan(),
1564	fuse_get_session(), fuse_daemonize()
1565
1566	* fuse_chan_recv() may now return a new channel which will be used
1567	to send the reply
1568
15692006-03-16  Miklos Szeredi <miklos@szeredi.hu>
1570
1571	* Released 2.6.0-pre2
1572
15732006-03-16  Miklos Szeredi <miklos@szeredi.hu>
1574
1575	* Don't unmount if already unmounted.  This fixes a problem seen
1576	in the following situation: Lazy unmount a busy filesystem; Mount
1577	a new one in top; When the first finally unmounts, the second also
1578	unmounts.  Reported by Franco Broi
1579
15802006-03-15  Miklos Szeredi <miklos@szeredi.hu>
1581
1582	* lowlevel lib: use indirect function calls instead of a
1583	switch/case construct.  Besides increased efficiency it helps
1584	maintainability & readability too.  Patch from Florin Malita
1585
15862006-03-13  Miklos Szeredi <miklos@szeredi.hu>
1587
1588	* kernel: replace global spinlock with a per-connection spinlock
1589
15902006-03-10  Miklos Szeredi <miklos@szeredi.hu>
1591
1592	* Fix source compatibility breakage for fuse_unmount().  Report
1593	from Yura Pakhuchiy
1594
15952006-03-02  Miklos Szeredi <miklos@szeredi.hu>
1596
1597	* Fix O_ASYNC handling in fuse_dev_release().  From Jeff Dike
1598
15992006-03-01  Miklos Szeredi <miklos@szeredi.hu>
1600
1601	* Add O_ASYNC and O_NONBLOCK support to FUSE device.  Patch by
1602	Jeff Dike
1603
1604	* Renamed fuse_chan_receive() to fuse_chan_recv() and changed
1605	interface to return -errno in case of error.
1606
16072006-03-01  Csaba Henk <csaba.henk@creo.hu>
1608
1609	* libfuse: pass device file descriptor to fuse_unmount(), rewrite
1610	FreeBSD implementation so that it uses libc (sysctl backed) instead
1611	of an embdedded script (kmem backed). Adjust the control flow of
1612	hello_ll so that device doesn't get closed before unmount attempt.
1613
16142006-02-25  Miklos Szeredi <miklos@szeredi.hu>
1615
1616	* Lowlevel lib: return all-zero statvfs data if filesystem doesn't
1617	implement method.  This is needed on FreeBSD, and nicer on Linux
1618	too.  Highlevel lib already did this.  Reported by Csaba Henk
1619
1620	* Fix negative entry handling.  There was a bug, that negative
1621	lookups with timeouts (nodeid == 0) returned -EIO.
1622
16232006-02-23  Miklos Szeredi <miklos@szeredi.hu>
1624
1625	* Fix race between RELEASE and UNLINK, which might leave
1626	.fuse_hidden* files around
1627
16282006-02-21  Miklos Szeredi <miklos@szeredi.hu>
1629
1630	* fusexmp_fh: implement flush() method and call close() on the
1631	open file descriptor.  This is needed if used on an NFS
1632	filesystem, which buffers data until file is closed.  Franco Broi
1633	spotted the situation when 'cp -p' failed to set the modification
1634	time because of this.
1635
16362006-02-20  Miklos Szeredi <miklos@szeredi.hu>
1637
1638	* Released 2.6.0-pre1
1639
16402006-02-19  Miklos Szeredi <miklos@szeredi.hu>
1641
1642	* libfuse: fix use-after-free bug in interruptred reply_entry().
1643	Patch from John Muir
1644
1645	* libfuse: fix wrong symbol versioning for fuse_mount.  Debian bug
1646	ID: 352631.  Found by Stéphane Rosi
1647
16482006-02-17  Miklos Szeredi <miklos@szeredi.hu>
1649
1650	* Lowlevel lib: Unify fuse_dirent_size() and fuse_add_dirent()
1651	into a single function fuse_add_direntry().  This cleans up the
1652	interface and makes it possible to do stacking.
1653
16542006-02-16  Miklos Szeredi <miklos@szeredi.hu>
1655
1656	* Fix rare race betweeen abort and release caused by failed iget()
1657	in fuse_create_open().
1658
1659	* Add 'ac_attr_timeout' option e.g. for filesystems which do their
1660	own attribute caching.
1661
16622006-02-15  Miklos Szeredi <miklos@szeredi.hu>
1663
1664	* Work around FreeBSD runtime linker "feature" which binds an old
1665	version of a symbol to internal references if the symbol has more
1666	than one version.  This resulted in infinite recursion in
1667	fuse_lowlevel_new_compat25().
1668
16692006-02-10  Csaba Henk <csaba.henk@creo.hu>
1670
1671	* Refine clock_gettime() querying so that linker options
1672	shall be set as it's appropriate for the target platform.
1673
16742006-02-09  Miklos Szeredi <miklos@szeredi.hu>
1675
1676	* Fix udev rule syntax.  Reported by Nix
1677
16782006-02-08  Miklos Szeredi <miklos@szeredi.hu>
1679
1680	* In some cases udev rule seems to be ineffective when installed
1681	as 40-fuse.rules but work as 60-fuse.rules.  Reported by John Hunt
1682
16832006-02-03  Miklos Szeredi <miklos@szeredi.hu>
1684
1685	* Fix compilation when build directory is different from source
1686	directory.  Reported by Frédéric L. W. Meunier
1687
16882006-02-02  Miklos Szeredi <miklos@szeredi.hu>
1689
1690	* Fix even bigger bug introduced in fix for request_end() on
1691	2006-01-14.  Reported by Gal Rosen
1692
16932006-01-30  Miklos Szeredi <miklos@szeredi.hu>
1694
1695	* highlevel-lib: add 'auto_cache' option.  This caches file data
1696	based on modification time and size
1697
16982006-01-20  Miklos Szeredi <miklos@szeredi.hu>
1699
1700	* Sanitize storage type and help message in mount_bsd.c.  Patch
1701	from Csaba Henk
1702
1703	* fuse_opt: add new helper constants FUSE_OPT_KEY_KEEP and
1704	FUSE_OPT_KEY_DISCARD
1705
1706	* Add options 'max_readahead', 'sync_read' and 'async_read'
1707
1708	* Kernel ABI version 7.6:
1709
1710	* Negotiate the 'max_readahead' value and 'async_read' flags with
1711	userspace in the INIT method
1712
1713	* Add connection info to ->init() methods to both lowlevel and
1714	highlevel API
1715
1716	* Fall back to synchronous read() behavior if either library or
1717	userspace filesystem is using the old interface version.  This is
1718	needed so non-updated filesystems won't be confused by the
1719	different read() behavior
1720
17212006-01-19  Miklos Szeredi <miklos@szeredi.hu>
1722
1723	* lib: if "fsname=" option was given, pass it to fusermount
1724
1725	* fuse_opt: add new fuse_opt_insert_arg() function, which is
1726	needed by filesystems to implement some argument manipulations
1727	correctly
1728
1729	* fuse_opt: fix memory leak in handling "--" option
1730
17312006-01-18  Miklos Szeredi <miklos@szeredi.hu>
1732
1733	* kernel: fix detection of case when fuse is not configured into
1734	the kernel either as module or built-in
1735
1736	* fuse_opt.h: fix incompatibility with C++ compilers by renaming
1737	'template' structure member to 'templ'.  Reported by Takashi Iwai
1738
1739	* fuse.h: fix compatibility bugs.  Patch by Yura Pakhuchiy
1740
1741	* kernel: support version 2.6.16 (i_sem -> i_mutex)
1742
17432006-01-16  Miklos Szeredi <miklos@szeredi.hu>
1744
1745	* Added (again) asynchronous readpages support
1746
1747	* Each connection now shows up under /sys/fs/fuse/connections
1748
1749	* Connection attributes exported to sysfs: 'waiting' number of
1750	waiting requests; 'abort' abort the connection
1751
1752	* Connection may be aborted through either the sysfs interface or
1753	with 'umount -f mountpoint'
1754
17552006-01-14  Miklos Szeredi <miklos@szeredi.hu>
1756
1757	* Released 2.5.0
1758
17592006-01-14  Miklos Szeredi <miklos@szeredi.hu>
1760
1761	* kernel: fix a couple of bugs
1762
1763	* Order of request_end() and fuse_copy_finish() was wrong.
1764	Posthumous note: Franco Broi managed to exploit this, though it
1765	seemed quite impossible
1766
1767	* request_end() used request pointer after decrementing refcount
1768
1769	* Clearing ->connected or ->mounted connection flags could race
1770	with setting other bitfields not protected with a lock
1771
17722006-01-10  Miklos Szeredi <miklos@szeredi.hu>
1773
1774	* kernel: add necessary compile flags for 2.4.X/x86_64.
1775	Report from Sean Ziegeler
1776
17772006-01-09  Miklos Szeredi <miklos@szeredi.hu>
1778
1779	* Released 2.5.0-pre2
1780
17812006-01-09  Miklos Szeredi <miklos@szeredi.hu>
1782
1783	* Applied patch from Csaba Henk, to update mount_bsd to new
1784	fuse_mount() semantics
1785
1786	* Ignore auto,noauto,... options in mount.fuse.  Reported by Frank
1787	Steiner and Don Taber
1788
1789	* fusermount: add 'dirsync' mount option
1790
17912006-01-07  Miklos Szeredi <miklos@szeredi.hu>
1792
1793	* Improved help reporting and added version reporting to library
1794
17952006-01-06  Miklos Szeredi <miklos@szeredi.hu>
1796
1797	* Change working directory to "/" even if running in the
1798	foreground.  Patch from Jonathan Brandmeyer
1799
1800	* Changed lots of functions to use 'struct fuse_args' instead of
1801	separate argc and argv
1802
1803	* Added fuse_parse_cmdline(), fuse_set_signal_handlers() and
1804	fuse_remove_signal_handlers() functions, so that it's now pretty
1805	easy to get all the functionality of fuse_main() with a filesystem
1806	using the lowlevel API.
1807
18082006-01-02  Miklos Szeredi <miklos@szeredi.hu>
1809
1810	* mount.fuse: the 'user' option should be ignored. Report and
1811	solution from Mattd.
1812
1813	* mount.fuse: export PATH in the right place. Report and patch
1814	from Hannes Schweizer
1815
18162005-12-16  Miklos Szeredi <miklos@szeredi.hu>
1817
1818	* Clean up the option parsing interface slightly, by creating an
1819	"argument list" structure, that contains the argument vector and
1820	count
1821
18222005-12-15  Miklos Szeredi <miklos@szeredi.hu>
1823
1824	* fusermount: check if /mnt/mtab is a symlink and don't modify it
1825	in that case
1826
1827	* kernel: simplify request size limiting. INIT only contains
1828	maximum write size, maximum path component size remains fixed at
1829	1024 bytes, and maximum xattr size depends on read buffer.
1830
18312005-12-14  Miklos Szeredi <miklos@szeredi.hu>
1832
1833	* Fix readdir() failure on x86_64, of 32bit programs compiled
1834	without largefile support.  Bug report and help from Anthony
1835	Kolasny
1836
1837	* If lookup returns invalid mode, return -EIO instead of creating
1838	a regular file
1839
1840	* Add current output argument vector to option processing
1841	function
1842
18432005-12-12  Miklos Szeredi <miklos@szeredi.hu>
1844
1845	* Fix stale code in ifdef FreeBSD.  Patch from Csaba Henk
1846
18472005-12-09  Miklos Szeredi <miklos@szeredi.hu>
1848
1849	* Released 2.5.0-pre1
1850
18512005-12-09  Miklos Szeredi <miklos@szeredi.hu>
1852
1853	* libfuse: added option parsing interface, defined in
1854	<fuse_opt.h>.
1855
18562005-12-07  Miklos Szeredi <miklos@szeredi.hu>
1857
1858	* Return EIO for file operations (read, write, fsync, flush) on
1859	open files whose inode has become "bad".  Inodes will be marked
1860	"bad" if their type changes.  Bug report by Csaba Henk
1861
18622005-12-06  Miklos Szeredi <miklos@szeredi.hu>
1863
1864	* Use bigger request buffer size.  write() did not work on archs
1865	with > 4k page size, Bug report by Mark Haney
1866
1867	* ABI version 7.5:
1868
1869	* Extend INIT reply with data size limits
1870
18712005-12-02  Miklos Szeredi <miklos@szeredi.hu>
1872
1873	* Fix memory leak in fuse_read_cmd()/fuse_process_cmd().  Bug
1874	reported by Vincenzo Ciancia
1875
1876	* Handle exit-by-umount in fuse_read_cmd()
1877
18782005-11-29  Miklos Szeredi <miklos@szeredi.hu>
1879
1880	* Check if '-msoft-float' option is supported by compiler when
1881	configuring for a 2.4.x kernel.  Bug report by Mark Haney
1882
1883	* In multithreaded loop send a TERM signal to the main thread if
1884	one of the other threads exit.  Needed on FreeBSD for a clean exit
1885	on umount.  Should not cause any harm on Linux either
1886
18872005-11-28  Miklos Szeredi <miklos@szeredi.hu>
1888
1889	* Fix bug in 32-bit file handle compatibility
1890
18912005-11-27  Miklos Szeredi <miklos@szeredi.hu>
1892
1893	* Block TERM, INT, HUP and QUIT signals in all but the main
1894	thread.  According to POSIX it's not specified which thread will
1895	receive these signals.
1896
1897	* Kernel changes:
1898
1899	* Check for directory aliasing on mkdir, not just on lookup
1900
1901	* Check for special node ID values in create+open operation
1902
1903	* Sync with -mm: readv, writev, aio_read and aio_write methods
1904	added to file operations
1905
1906	* Cleanups: lookup code, page offset calculation
1907
1908	* ABI stepped to 7.4, changes:
1909
1910	* frsize member added to fuse_kstatfs structure
1911
1912	* added support for negative entry caching: on lowlevel API if
1913	fuse_entry_param::ino is set to zero in reply to a lookup request,
1914	the kernel will cache the dentry for the specified amount of time.
1915
1916	* libfuse: added 'negative_timeout' option: specifies how much
1917	negative entries should be cached.  Default is zero, to be
1918	compatible with prior versions
1919
19202005-11-22  Miklos Szeredi <miklos@szeredi.hu>
1921
1922	* Add detection of mainline FUSE code in running kernel
1923
19242005-11-21  Miklos Szeredi <miklos@szeredi.hu>
1925
1926	* Don't use async cancelation in multithreaded loop.  This makes
1927	it more portable to systems where read() is not async cancel safe.
1928	Report from Andriy Gapon
1929
19302005-11-20  Miklos Szeredi <miklos@szeredi.hu>
1931
1932	* Warn if API version 11 compatibility is requested
1933
19342005-11-17  Miklos Szeredi <miklos@szeredi.hu>
1935
1936	* More FreeBSD merge
1937
1938	* fusermount: don't allow mountpoints with '\n', '\t', or '\\' in
1939	them, because it corrupts /etc/mtab.  Found by Thomas Biege
1940	CVE-2005-3531
1941
1942	* libfuse: don't use system() to invoke 'fusermount -u ...'
1943	because it breaks mountpoints with spaces in them into multiple
1944	arguments
1945
19462005-11-16  Miklos Szeredi <miklos@szeredi.hu>
1947
1948	* Merge library part of FreeBSD port.  Patch by Csaba Henk
1949
19502005-11-11  Miklos Szeredi <miklos@szeredi.hu>
1951
1952	* Use 64bit type for file handle, so the full range supported by
1953	the kernel interface is available to applications
1954
19552005-11-10  Miklos Szeredi <miklos@szeredi.hu>
1956
1957	* Moved mountpoint argument checking from fuse_parse_cmdline() to
1958	fuse_mount() in preparation to FreeBSD merge.
1959
19602005-11-08  Miklos Szeredi <miklos@szeredi.hu>
1961
1962	* Remove unneeded close() from fuse_teardown().  Spotted by Csaba
1963	Henk.
1964
19652005-11-07  Miklos Szeredi <miklos@szeredi.hu>
1966
1967	* Make the statfs change backwards compatible.
1968
19692005-11-06  Miklos Szeredi <miklos@szeredi.hu>
1970
1971	* Change ->statfs() method to use 'struct statvfs' instead of
1972	'struct statfs'.  This makes the API more portable since statvfs()
1973	is defined by POSIX.
1974
19752005-10-28  Miklos Szeredi <miklos@szeredi.hu>
1976
1977	* Add fgetattr() method, which currently will only be called after
1978	a successful call to a create() method.
1979
19802005-10-26  Miklos Szeredi <miklos@szeredi.hu>
1981
1982	* Change kernel ABI version to 7.3
1983
1984	* Add ACCESS operation.  This is called from the access() system
1985	call if 'default_permissions' mount option is not given, and is
1986	not called on kernels 2.4.*
1987
1988	* Add atomic CREATE+OPEN operation.  This will only work with
1989	2.6.15 (presumably) or later Linux kernels.
1990
1991	* Add ftruncate() method.  This will only work with 2.6.15
1992	(presumably) or later Linux kernels.
1993
1994	* Fix kernel module compile if kernel source and build directories
1995	differ.  Report and initial patch by John Eastman
1996
19972005-10-18  Miklos Szeredi <miklos@szeredi.hu>
1998
1999	* lib: optimize buffer reallocation in fill_dir.
2000
20012005-10-17  Miklos Szeredi <miklos@szeredi.hu>
2002
2003	* Released 2.4.1
2004
20052005-10-14  Miklos Szeredi <miklos@szeredi.hu>
2006
2007	* libfuse: add debug for write result (by Shaun Jackman) and
2008	warnings for too large read/write result
2009
20102005-10-11  Miklos Szeredi <miklos@szeredi.hu>
2011
2012	* Spelling fixes, thanks to Ioannis Barkas
2013
20142005-10-10  Miklos Szeredi <miklos@szeredi.hu>
2015
2016	* fuse_common.h: use extern "C".  Thanks to Valient Gough for the
2017	patch
2018
20192005-10-07  Miklos Szeredi <miklos@szeredi.hu>
2020
2021	* highlevel-lib: init() and destroy() methods didn't have an
2022	initialized fuse_context.  Bug reported by Tim Stoakes
2023
20242005-10-04  Miklos Szeredi <miklos@szeredi.hu>
2025
2026	* Released 2.4.0
2027
20282005-10-03  Miklos Szeredi <miklos@szeredi.hu>
2029
2030	* Add documentation to fuse_lowlevel.h
2031
2032	* API cleanups:
2033
2034	* Remove definitions of unused FATTR_CTIME / FUSE_SET_ATTR_CTIME
2035
2036	* Move fuse_mount() and fuse_unmount() to fuse_common.h
2037
2038	* Change the return type of fuse_reply_none() from int to void.
2039
20402005-09-30  Miklos Szeredi <miklos@szeredi.hu>
2041
2042	* kernel: NFS exporting leaked dentries.  Bug found and fixed by
2043	Akshat Aranya.
2044
20452005-09-29  Miklos Szeredi <miklos@szeredi.hu>
2046
2047	* fusermount: fix error message, when unable to open /dev/fuse.
2048	Report by Balázs Pozsár
2049
20502005-09-28  Miklos Szeredi <miklos@szeredi.hu>
2051
2052	* UClibc fixes from Christian Magnusson
2053
20542005-09-27  Miklos Szeredi <miklos@szeredi.hu>
2055
2056	* Added NAME="%k" to util/udev.rules.  Fix by Mattias Wadman.
2057
20582005-09-26  Miklos Szeredi <miklos@szeredi.hu>
2059
2060	* Released 2.4.0-rc1
2061
20622005-09-26  Miklos Szeredi <miklos@szeredi.hu>
2063
2064	* fusermount: allow user umount in the case when /etc/mtab is a
2065	symlink to /proc/mounts.  Reported by Balázs Pozsár.
2066
20672005-09-23  Miklos Szeredi <miklos@szeredi.hu>
2068
2069	* Check for special node ID values in lookup and creation
2070
20712005-09-22  Miklos Szeredi <miklos@szeredi.hu>
2072
2073	* Slight optimization in returning EINVAL error in case of an open
2074	with O_DIRECT flag.
2075
20762005-09-20  Miklos Szeredi <miklos@szeredi.hu>
2077
2078	* Remove '--enable-auto-modprobe' configure flag.  Module
2079	auto-loading is now handled by the kernel.
2080
20812005-09-15  Miklos Szeredi <miklos@szeredi.hu>
2082
2083	* Install UDEV rule file, so /dev/fuse is created with mode 0666.
2084	Help from Jens M. Noedler.
2085
20862005-09-14  Miklos Szeredi <miklos@szeredi.hu>
2087
2088	* Add memory cleanup on thread exit
2089
20902005-09-13  Miklos Szeredi <miklos@szeredi.hu>
2091
2092	* Set umask to zero in fusexmp and fusexmp_fh, so that
2093	files/directories are created with the requested mode.
2094
20952005-09-12  Miklos Szeredi <miklos@szeredi.hu>
2096
2097	* Don't ignore read error in multithreaded loop
2098
20992005-09-08  Miklos Szeredi <miklos@szeredi.hu>
2100
2101	* Released 2.4.0-pre2
2102
21032005-09-08  Miklos Szeredi <miklos@szeredi.hu>
2104
2105	* Revert lock and access operations.  Postpone these until 2.5.
2106
21072005-09-02  Miklos Szeredi <miklos@szeredi.hu>
2108
2109	* Fix compile warning on 2.6.13 and later
2110
2111	* Fix compilation on old kernels
2112
21132005-08-19  Miklos Szeredi <miklos@szeredi.hu>
2114
2115	* lib: always refresh directory contents after rewinddir() to
2116	conform to SUS.  Bug found by John Muir.
2117
21182005-08-15  Miklos Szeredi <miklos@szeredi.hu>
2119
2120	* Released 2.4.0-pre1
2121
21222005-08-14  Miklos Szeredi <miklos@szeredi.hu>
2123
2124	* lib: cleaned up (or messed up, depending on your POV) the low
2125	level library API.  Hopefully this is close to the final form.
2126
21272005-08-05  Miklos Szeredi <miklos@szeredi.hu>
2128
2129	* fusermount: don't allow empty mountpoint argument, which defeats
2130	automatic umounting in fuse_main().  Bugreport by Václav Jůza
2131
21322005-08-03  Miklos Szeredi <miklos@szeredi.hu>
2133
2134	* fix warnings in fuse.h and fuse_lowlevel.h if -Wshadow compiler
2135	option is used (Paul Alfille).
2136
21372005-08-02  Miklos Szeredi <miklos@szeredi.hu>
2138
2139	* highlevel-lib: added mount options "attr_timeout" and
2140	"entry_timeout".  These options control the length of time file
2141	attributes and entries (names) are cached.  Both default to 1.0
2142	second.
2143
2144	* kernel: correctly handle zero timeout for attributes and entries
2145
21462005-08-01  Miklos Szeredi <miklos@szeredi.hu>
2147
2148	* Added missing symbols to versionscript (Joshua J. Berry)
2149
2150	* kernel: implement two flags, open can set: 'direct_io' and
2151	'keep_cache'.  These correspond exactly to mount options
2152	'direct_io' and 'kernel_cache', but allow a per-open setting.
2153
2154	* Move 'direct_io' and 'kernel_cache' mount option handling to
2155	userspace.  For both mount options, if the option is given, then
2156	the respective open flag is set, otherwise the open flag is left
2157	unmodified (so the filesystem can set it).
2158
2159	* lib (highlevel): make open method optional
2160
21612005-07-28  Miklos Szeredi <miklos@szeredi.hu>
2162
2163	* kernel: invalidate attributes for read/readdir/readlink
2164	operations
2165
2166	* kernel: detect newer UML kernels
2167
21682005-07-26  Miklos Szeredi <miklos@szeredi.hu>
2169
2170	* Make the installation path of fuse.ko and mount.fuse
2171	configurable through INSTALL_MOD_PATH and MOUNT_FUSE_PATH
2172	environment variables.  Requirement and help from Csaba Henk.
2173
21742005-07-22  Miklos Szeredi <miklos@szeredi.hu>
2175
2176	* Fix bug, that causes filesystem requests to hang when unique
2177	request counter becomes negative.  This happens after
2178	2,147,483,648 operations, so most people won't care.  Thanks to
2179	Franco Broi for the report and testing.
2180
21812005-07-21  Miklos Szeredi <miklos@szeredi.hu>
2182
2183	* Don't change mtime/ctime/atime to local time on read/write.
2184	Bug reported by Ben Grimm
2185
2186	* Install fuse_common.h and fuse_lowlevel.h.  Report by Christian
2187	Magnusson
2188
2189	* fusermount: use getopt_long() for option parsing.  It allows the
2190	use of '--' to stop argument scanning, so fusermount can now
2191	operate on directories whose names begin with a '-'.  Patch by
2192	Adam Connell
2193
21942005-07-15  Miklos Szeredi <miklos@szeredi.hu>
2195
2196	* fusermount: add '-v', '--version' and '--help' options
2197
2198	* add inode based API
2199
22002005-07-12  Miklos Szeredi <miklos@szeredi.hu>
2201
2202	* lib: don't block signals in worker threads.  Problem noticed by
2203	Usarin Heininga
2204
22052005-07-07  Miklos Szeredi <miklos@szeredi.hu>
2206
2207	* lib: don't allow both 'allow_other' and 'allow_root' options to
2208	be given
2209
22102005-07-06  Miklos Szeredi <miklos@szeredi.hu>
2211
2212	* fusermount: check if mountpoint is empty (only '.' and '..' for
2213	directories, and size = 0 for regular files).  If "nonempty"
2214	option is given, omit this check.  This is useful, so users don't
2215	accidentally hide data (e.g. from backup programs).  Thanks to
2216	Frank van Maarseveen for pointing this out.
2217
2218	* kernel: check if mandatory mount options ('fd', 'rootmode',
2219	'user_id', 'group_id') are all given
2220
2221	* lib: simplify 'readdir_ino' handling
2222
2223	* lib: add mount options 'umask=M', 'uid=N', 'gid=N'
2224
22252005-07-03  Miklos Szeredi <miklos@szeredi.hu>
2226
2227	* kernel: clean up 'direct_io' code
2228
22292005-06-28  Miklos Szeredi <miklos@szeredi.hu>
2230
2231	* Add 'mount.fuse' written by Petr Klima
2232
2233	* '/dev/fuse' is created by 'make install' if does not yet exist
2234
22352005-06-20  Miklos Szeredi <miklos@szeredi.hu>
2236
2237	* Fix UCLIBC compile error.  Patch by Christian Magnusson
2238
22392005-06-08  Miklos Szeredi <miklos@szeredi.hu>
2240
2241	* Enable the auto-loading of the module via access to the
2242	corresponding device file.  Patch by Takashi Iwai.
2243
2244	* Allow mounting a regular file (over a regular file) for
2245	unprivleged users.
2246
2247	* Do not create temporary device file.  Require "/dev/fuse" to
2248	exist, and be readable/writable by the mounting user.
2249
22502005-06-02  Miklos Szeredi <miklos@szeredi.hu>
2251
2252	* Released 2.3.0
2253
22542005-06-02  Miklos Szeredi <miklos@szeredi.hu>
2255
2256	* Fix serious information leak: if the filesystem returns a short
2257	byte count to a read request, and there are non-zero number of
2258	pages which are not filled at all, these pages will not be zeroed.
2259	Hence the user can read out previous memory contents.  Found by
2260	Sven Tantau.
2261
22622005-05-27  Miklos Szeredi <miklos@szeredi.hu>
2263
2264	* Add "readdir_ino" mount option, which tries to fill in the d_ino
2265	field in struct dirent.  This mount option is ignored if "use_ino"
2266	is used.  It helps some programs (e.g. 'pwd' used over NFS from a
2267	non-Linux OS).  Patch by David Shaw.
2268
22692005-05-12  Miklos Szeredi <miklos@szeredi.hu>
2270
2271	* Released 2.3-rc1
2272
22732005-05-12  Miklos Szeredi <miklos@szeredi.hu>
2274
2275	* File save in krusader and other editors doesn't work with sshfs,
2276	because open() is interrupted by a periodic signal, and open()
2277	restarts forever, without any progress.  This could just be fixed
2278	in open(), but the problem is more generic: if signals are
2279	received more often than the filesystem can get the request to
2280	userspace, it will never finish.  This is probably only a
2281	theoretical problem, nevertheless I'm removing the possibility to
2282	interrupt requests with anything other than SIGKILL, even before
2283	being sent to userspace.  Bugreport by Eduard Czimbalmos.
2284
22852005-05-09  Miklos Szeredi <miklos@szeredi.hu>
2286
2287	* libfuse: add "tree_lock" rwlock, that is locked for write in
2288	rename, unlink and rmdir, and locked for read in all other
2289	operations.  This should fix the rename/release race reported by
2290	Valient Gough and others.  The solution is very coarse, a finer
2291	grained locking scheme could be implemented, but it would be much
2292	more complex.  Let's see whether this is good enough.
2293
22942005-05-09  Miklos Szeredi <miklos@szeredi.hu>
2295
2296	* Released 2.3-pre7
2297
22982005-05-08  Miklos Szeredi <miklos@szeredi.hu>
2299
2300	* Better fix for out of order FORGET messages.  Now the
2301	LOOKUP/FORGET messages are balanced exactly (one FORGET can
2302	balance many lookups), so the order no longer matters.  This
2303	changes the kernel ABI slightly, but the library remains backward
2304	compatible.
2305
23062005-05-06  Miklos Szeredi <miklos@szeredi.hu>
2307
2308	* Fix abort for out of order FORGET messages.  Again.  Spotted by
2309	Franco Broi again.  Sorry :)
2310
23112005-04-29  Miklos Szeredi <miklos@szeredi.hu>
2312
2313	* Released 2.3-pre6
2314
23152005-04-29  Miklos Szeredi <miklos@szeredi.hu>
2316
2317	* Make fusermount work with fuse kernel modules not yet supporting
2318	the "group_id" option (added for the purpose of stricter
2319	permission checking).
2320
23212005-04-28  Miklos Szeredi <miklos@szeredi.hu>
2322
2323	* Check for hard-linked directories in lookup.  This could cause
2324	problems in the VFS, which assumes that such objects never exist.
2325
2326	* Make checking of permission for other users more strict.  Now
2327	the same privilege is required for the mount owner as for ptrace
2328	on the process performing the filesystem operation.
2329
23302005-04-23  Miklos Szeredi <miklos@szeredi.hu>
2331
2332	* Released 2.3-pre5
2333
23342005-04-22  Miklos Szeredi <miklos@szeredi.hu>
2335
2336	* Add -msoft-float to kernel module compile flags for 2.4.X.  This
2337	is needed on certain architectures.  Report from Chris Kirby
2338
2339	* Fix buggy behavior of open(..., O_CREAT|O_EXCL) if interrupted.
2340	Reported by David Shaw
2341
2342	* Remove "allow_root" option from kernel module, and implement
2343	it's functionality in the library
2344
2345	* Fix Oops caused by premature release of fuse_conn.  Clean up
2346	related code, to be more readable
2347
2348	* Sendfile should not use page cache if "direct_io" mount option
2349	is given
2350
23512005-04-08  Miklos Szeredi <miklos@szeredi.hu>
2352
2353	* Fix Oops in case of nfs export.  Spotted by David Shaw
2354
2355	* Fix another Oops in case of write over nfs with direct_io turned
2356	on.  Again spotted by David Shaw
2357
23582005-04-07  Miklos Szeredi <miklos@szeredi.hu>
2359
2360	* Released 2.3-pre4
2361
23622005-04-07  Miklos Szeredi <miklos@szeredi.hu>
2363
2364	* lib: finalized new readdir() interface, which now supersedes the
2365	getdir() method.
2366
23672005-04-03  Miklos Szeredi <miklos@szeredi.hu>
2368
2369	* Released 2.3-pre3
2370
23712005-04-03  Miklos Szeredi <miklos@szeredi.hu>
2372
2373	* Implement backward compatibility with version 5 kernel ABI
2374
23752005-04-01  Miklos Szeredi <miklos@szeredi.hu>
2376
2377	* Released 2.3-pre2
2378
23792005-04-01  Miklos Szeredi <miklos@szeredi.hu>
2380
2381	* kernel: fix dirent offset handling
2382
2383	* lib: add readdir and releasedir methods
2384
2385	* lib: use fh field of fuse_file_info in opendir, readdir,
2386	releasedir and fsyncdir methods
2387
2388	* lib: check kernel API version and bail out of it's old.  This
2389	will be properly fixed in the next release
2390
23912005-03-31  Miklos Szeredi <miklos@szeredi.hu>
2392
2393	* Released 2.3-pre1
2394
23952005-03-31  Miklos Szeredi <miklos@szeredi.hu>
2396
2397	* kernel API: add padding to structures, so 64bit and 32bit
2398	compiler will return the same size
2399
2400	* kernel API: add offset field to fuse_dirent.  This will allow
2401	more sophisticated readdir interface for userspace
2402
2403	* kernel API: change major number to 6
2404
2405	* kernel: fix warnings on 64bit archs
2406
2407	* kernel: in case of API version mismatch, return ECONNREFUSED
2408
24092005-03-24  Miklos Szeredi <miklos@szeredi.hu>
2410
2411	* kernel: trivial cleanups
2412
24132005-03-21  Miklos Szeredi <miklos@szeredi.hu>
2414
2415	* Add fsyncdir() operation
2416
24172005-03-19  Miklos Szeredi <miklos@szeredi.hu>
2418
2419	* kernel: add locking to background list (fixes previous fix)
2420
24212005-03-18  Miklos Szeredi <miklos@szeredi.hu>
2422
2423	* kernel: fix bug which could cause leave busy inodes after
2424	unmount, and Oops.
2425
24262005-03-08  Miklos Szeredi <miklos@szeredi.hu>
2427
2428	* examples: add -lpthread to link flags to work around valgrind
2429	quirk
2430
2431	* lib: don't exit threads, so cancelation doesn't cause segfault
2432
24332005-03-04  Miklos Szeredi <miklos@szeredi.hu>
2434
2435	* kernel: fix nasty bug which could cause an Oops under certain
2436	situations.  Found by Magnus Johansson
2437
24382005-02-28  Miklos Szeredi <miklos@szeredi.hu>
2439
2440	* libfuse: added opendir() method.  This can be used in case
2441	permission checking in getdir() is too late.  Thanks to Usarin
2442	Heininga for pointing out this deficiency
2443
2444	* libfuse: added init() and destroy() methods to fuse_operations
2445
2446	* kernel: llseek() method for files and directories made explicit
2447
2448	* kernel: fixed inode leak in NFS export in case of nodeid
2449	wrapping
2450
24512005-02-15  Miklos Szeredi <miklos@szeredi.hu>
2452
2453	* libfuse: clean up some unitialized memory found with valgrind
2454
2455	* Add -lpthread to Libs in fuse.pc.  Valgrind seems to need an
2456	explicitly linked libpthread for applications
2457
24582005-02-10  Miklos Szeredi <miklos@szeredi.hu>
2459
2460	* fusermount: set umask, otherwise /etc/mtab will have
2461	unpredictable permission.  Spotted by Jindrich Kolorenc
2462
2463	* fusermount: set owner and group of /etc/mtab to original values
2464	on unmount
2465
2466	* libfuse: add 'use_ino' option to help.  Patch by Valient Gough
2467
24682005-02-07  Miklos Szeredi <miklos@szeredi.hu>
2469
2470	* Cleaned up directory reading (temporary file is not used)
2471
24722005-02-02  Miklos Szeredi <miklos@szeredi.hu>
2473
2474	* Released 2.2
2475
24762005-02-02  Miklos Szeredi <miklos@szeredi.hu>
2477
2478	* Fix possible race when operation is interrupted
2479
24802005-01-28  Miklos Szeredi <miklos@szeredi.hu>
2481
2482	* Fix compilation on 2.6.7
2483
24842005-01-26  Miklos Szeredi <miklos@szeredi.hu>
2485
2486	* Released 2.2-pre6
2487
24882005-01-26  Miklos Szeredi <miklos@szeredi.hu>
2489
2490	* Fix bug in link() operation which caused the wrong path to be
2491	passed as the first argument.  Found by Anton Altaparmakov
2492
24932005-01-21  Miklos Szeredi <miklos@szeredi.hu>
2494
2495	* LIB: fix double reply in readdir operation
2496
2497	* fusermount: fix uid checking bug.  Patch by Adam Connell
2498
2499	* KERNEL: fix compile on various RedHat patched 2.4 kernels.
2500	Patch by Keshava Gowda
2501
25022005-01-20  Miklos Szeredi <miklos@szeredi.hu>
2503
2504	* KERNEL: provide correct llseek semantics for fuse device (fixes
2505	a bug on Progeny 2.4.20 kernel).  Reported by Valient Gough
2506
25072005-01-20  Miklos Szeredi <miklos@szeredi.hu>
2508
2509	* Released 2.2-pre5 (matches kernel 2.6.11-rc1-mm2)
2510
25112005-01-18  Miklos Szeredi <miklos@szeredi.hu>
2512
2513	* KERNEL ABI: remove GETDIR operation, and add OPENDIR, READDIR
2514	and RELEASEDIR.  This ends the ugly hack of passing a file
2515	descriptor to the kernel, and actually makes the code simpler.
2516
25172005-01-17  Miklos Szeredi <miklos@szeredi.hu>
2518
2519	* Released 2.2-pre4
2520
25212005-01-17  Miklos Szeredi <miklos@szeredi.hu>
2522
2523	* fusermount: remove capability setting, which was the cause of
2524	problems for some users.  It seems that FS related capabilities
2525	are removed by setfsuid(), so this isn't even needed.
2526
25272005-01-15  Miklos Szeredi <miklos@szeredi.hu>
2528
2529	* fix compilation on 2.4 kernels (reported by Valient Gough)
2530
2531	* fix failure to unmount bug (found by David Shaw)
2532
2533	* fusermount: improve parsing of /etc/fuse.conf
2534
25352005-01-13  Miklos Szeredi <miklos@szeredi.hu>
2536
2537	* Remove 'mount_max' and 'user_allow_other' module options.  These
2538	are now checked by fusermount, and can be set in /etc/fuse.conf
2539
2540	* KERNEL: change check for fsid == 0 to capable(CAP_DAC_OVERRIDE)
2541
25422005-01-11  Miklos Szeredi <miklos@szeredi.hu>
2543
2544	* KERNEL: fix possible inode allocation problem, where
2545	sizeof(struct inode) is not aligned (found by Mike Waychison)
2546
2547	* KERNEL: use new follow_link/put_link methods
2548
2549	* KERNEL: cosmetic fixes
2550
25512005-01-10  Miklos Szeredi <miklos@szeredi.hu>
2552
2553	* Released 2.2-pre3
2554
25552005-01-10  Miklos Szeredi <miklos@szeredi.hu>
2556
2557	* Add missing code that was accidently left out
2558
25592005-01-09  Miklos Szeredi <miklos@szeredi.hu>
2560
2561	* Released 2.2-pre2
2562
25632005-01-09  Miklos Szeredi <miklos@szeredi.hu>
2564
2565	* Change "uid" mount option to "user_id" to avoid confusion with a
2566	mount option "uid" commonly used by many filesystems
2567
25682005-01-09  Miklos Szeredi <miklos@szeredi.hu>
2569
2570	* Released 2.2-pre1
2571
25722005-01-09  Miklos Szeredi <miklos@szeredi.hu>
2573
2574	* If FUSE is configured in the kernel, don't build it by default
2575
25762005-01-07  Miklos Szeredi <miklos@szeredi.hu>
2577
2578	* Compile fix by Christian Magnusson
2579
25802005-01-05  Miklos Szeredi <miklos@szeredi.hu>
2581
2582	* Fix compilation for 2.6.{0-5} kernels
2583
25842005-01-04  Miklos Szeredi <miklos@szeredi.hu>
2585
2586	* KERNEL: if request is interrupted, still keep reference to used
2587	inode(s) and file, so that FORGET and RELEASE are not sent until
2588	userspace finishes the request.
2589
2590	* remove /{sys,proc}/fs/fuse/version, and instead add an INIT
2591	request with the same information, which is more flexible,
2592	simpler, works on embedded systems.
2593
25942004-12-16  Miklos Szeredi <miklos@szeredi.hu>
2595
2596	* KERNEL ABI: update interface to make it independent of type
2597	sizes.  This will help on 64 bit architectures which can run
2598	legacy 32 bit applications.
2599
2600	* KERNEL ABI: add "len" field to request headers.  This will allow
2601	sending/receiving requests in multiple chunks.
2602
2603	* KERNEL: handle file type change more intelligently
2604
2605	* LIB: "-o debug" option should disable backgrounding (fix by
2606	Fabien Reygrobellet)
2607
26082004-12-13  Miklos Szeredi <miklos@szeredi.hu>
2609
2610	* KERNEL: invalidate dentry/attributes if interrupted request
2611	could leave filesystem in an unknown state.
2612
26132004-12-12  Miklos Szeredi <miklos@szeredi.hu>
2614
2615	* KERNEL: lots of cleanups related to avoiding possible deadlocks.
2616	These will cause some regressions, but stability is considered
2617	more important.  If any of these features turns out to be
2618	important, it can be readded with the deadlock problems addressed.
2619
2620	* Make all requests interruptible (only with SIGKILL currently).
2621	This can be used to break any deadlock produced by the userspace
2622	filesystem accessing it's own exported files.  The RELEASE request
2623	is special, because if it's interrupted before sending it to
2624	userspace it is still sent, but the reply is not awaited.
2625
2626	* If request is interrupted before being sent to userspace, and if
2627	it hasn't yet got any side effects, it is always restarted,
2628	regardless of the SA_RESTART flag.  This makes these interruptions
2629	transparent to the process.
2630
2631	* Remove shared-writable mmap support, which was prone to an
2632	out-of-memory deadlock situation
2633
2634	* Remove INVALIDATE userspace initiated request
2635
2636	* Make readpages() synchronous.  Asynchronous requests are
2637	deadlock prone, since they cannot be interrupted.
2638
2639	* Add readv/writev support to fuse device operations
2640
2641	* Remove some printks, which userspace FS can use for a DoS
2642	against syslog
2643
2644	* Remove 'large_read' mount option from 2.6 in kernel, check it in
2645	fusermount instead
2646
2647	* LIB: improve compatibility with a fuse.h header installed in
2648	${prefix}/include which in turn includes the real header.
2649
2650	* LIB: improve compatibility by defining fuse_main() (which is now
2651	not used), so old configure scripts find it.
2652
26532004-12-10  Miklos Szeredi <miklos@szeredi.hu>
2654
2655	* When mounting on a subdirectory of / don't duplicate slashes at
2656	the beggining of path (spotted by David Shaw)
2657
26582004-12-09  Miklos Szeredi <miklos@szeredi.hu>
2659
2660	* Fix bug causing garbage in mount options (spotted by David Shaw)
2661
26622004-12-07  Miklos Szeredi <miklos@szeredi.hu>
2663
2664	* Add 'writepage' flag to 'fuse_file_info'.
2665
2666	* More comments in fuse.h
2667
2668	* Get rid of double underscores
2669
26702004-12-04  Miklos Szeredi <miklos@szeredi.hu>
2671
2672	* Add -D_FILE_OFFSET_BITS=64 to cflags provided by pkg-config
2673
2674	* helper.c: add -ho option, which only displays the options not
2675	the usage header.  This can be used by filesystems which have
2676	their own options.
2677
26782004-12-03  Miklos Szeredi <miklos@szeredi.hu>
2679
2680	* Add source compatibility to 2.1 and 1.1 APIs.  To select betwen
2681	versions simply define FUSE_USE_VERSION to 22, 21 or 11 before
2682	including the fuse header
2683
2684	* Add binary compatibility to 2.1 version of library with symbol
2685	versioning
2686
26872004-12-03  Miklos Szeredi <miklos@szeredi.hu>
2688
2689	* Released 2.1
2690
26912004-12-01  Miklos Szeredi <miklos@szeredi.hu>
2692
2693	* kernel: clean up writing functions
2694
2695	* kernel: no allocation on write in direct_io mode
2696
2697	* move linux/fuse.h to fuse_kernel.h
2698
26992004-11-30  Miklos Szeredi <miklos@szeredi.hu>
2700
2701	* kernel: clean up reading functions
2702
27032004-11-29  Miklos Szeredi <miklos@szeredi.hu>
2704
2705	* kernel: make readpage() uninterruptible
2706
2707	* kernel: check readonly filesystem flag in fuse_permission
2708
2709	* lib: don't die if version file not found and new style device
2710	exists
2711
2712	* lib: add '-r' option, which is short for '-o ro'
2713
2714	* fusermount: simplify device opening
2715
2716	* kernel: when direct_io is turend on, copy data directly to
2717	destination without itermediate buffer.  More efficient and safer,
2718	since no allocation is done.
2719
2720	* fusermount: fix warning if fuse module is not loaded
2721
2722	* kernel: use /dev/fuse on 2.4 too
2723
27242004-11-26  Miklos Szeredi <miklos@szeredi.hu>
2725
2726	* libfuse API change: open, read, write, flush, fsync and release
2727	are passed a 'struct fuse_file_info' pointer containing the open
2728	flags (open and release), and the file handle.  Verion changed to
2729	3.0.
2730
27312004-11-23  Miklos Szeredi <miklos@szeredi.hu>
2732
2733	* More cleanups in the kernel
2734
2735	* The 10,229 charater device number has been assigned for FUSE
2736
2737	* Version file checking fix (reported by Christian Magnusson)
2738
2739	* fusermount: opening the fuse device now doesn't need /sys.
2740
2741	* Optimize reading by controlling the maximum readahead based on
2742	the 'max_read' mount option
2743
2744	* fixes for UCLIBC (Christian Magnusson)
2745
27462004-11-19  Miklos Szeredi <miklos@szeredi.hu>
2747
2748	* Cleaned up kernel in preparation for merge into mainline:
2749
2750	* Use /sys/fs/fuse/version instead of /proc/fs/fuse/version
2751
2752	* Use real device (/dev/fuse) instead of /proc/fs/fuse/dev
2753
2754	* __user annotations for sparse
2755
2756	* allocate individual pages instead of kmalloc in fuse_readdir,
2757	fuse_read and fuse_write.
2758
2759	* Fix NFS export in case "use_ino" mount option is given
2760
2761	* Make libfuse and fusermount compatible with future versions
2762
2763	* fusermount: properly add mount options to /etc/mtab
2764
27652004-11-15  Miklos Szeredi <miklos@szeredi.hu>
2766
2767	* fusermount: do not resolve last component of mountpoint on if it
2768	is '.' or '..'.  This new path resolvation is now done on mount as
2769	well as unmount.  This enables relative paths to work on unmount.
2770
2771	* fusermount: parse common mount options like "ro", "rw", etc...
2772
2773	* Allow module params to be changed through sysfs
2774
27752004-11-14  Miklos Szeredi <miklos@szeredi.hu>
2776
2777	* Released 2.1-pre1
2778
27792004-11-14  Miklos Szeredi <miklos@szeredi.hu>
2780
2781	* Fix bug in fuse_readpages() causing Oops in certain situations.
2782	Bug found by Vincenzo Ciancia.
2783
2784	* Fix compilation with kernels versions > 2.6.9.
2785
27862004-11-11  Miklos Szeredi <miklos@szeredi.hu>
2787
2788	* Check kernel interface version in fusermount to prevent
2789	strangeness in case of mismatch.
2790
2791	* No need to allocate fuse_conn until actual mount happens
2792
2793	* Fix potential race between umount and fuse_invalidate
2794
2795	* Check superblock of proc file in addition to inode number
2796
2797	* Fix race between request_send_noreply() and fuse_dev_release()
2798
27992004-11-10  Miklos Szeredi <miklos@szeredi.hu>
2800
2801	* Separate configure for the kernel directory
2802
2803	* Don't allow write to return more than 'count'
2804
2805	* Extend kernel interface for future use
2806
28072004-11-09  Miklos Szeredi <miklos@szeredi.hu>
2808
2809	* Fix 'makeconf.sh' to use autoreconf if available
2810
28112004-11-08  Miklos Szeredi <miklos@szeredi.hu>
2812
2813	* Add ino argument to 'fuse_dirfil_t'.  NOTE: This breaks source
2814	compatibility with earlier versions.  To compile earier versions
2815	just add '-DFUSE_DIRFIL_COMPAT' compile flag or fix the source.
2816	Do not use the "use_ino" mount flag with filesystems compiled with
2817	FUSE_DIRFIL_COMPAT.
2818
2819	* Add pkg-config support.  To compile a FUSE based filesystem you
2820	can do  "gcc -Wall `pkg-config --cflags --libs fuse` myfs.c -o myfs"
2821	or similar.  Note, that the PKG_CONFIG_PATH environment variable
2822	usually needs to be set to "/usr/local/lib/pkgconfig".
2823
2824	* fuse.h is now installed in ${prefix}/include/fuse/
2825
28262004-11-02  Miklos Szeredi <miklos@szeredi.hu>
2827
2828	* Added "use_ino" mount option.  This enables the filesystems to
2829	set the st_ino field on files
2830
28312004-11-01  Miklos Szeredi <miklos@szeredi.hu>
2832
2833	* Fix compile problems with ancient (<=2.4.18) kernels (reported
2834	by Jeremy Smith)
2835
2836	* Add "allow_root" mount option.  Patch by Yaroslav Rastrigin
2837
2838	* Clear the 'exited' flag when mail loop is finished
2839
28402004-10-28  Miklos Szeredi <miklos@szeredi.hu>
2841
2842	* Make xattr functions work under 2.6 (bug found by Vincenzo
2843	Ciancia)
2844
28452004-10-26  Miklos Szeredi <miklos@szeredi.hu>
2846
2847	* Reset request in fuse_flush() (bugreport by David Shaw)
2848
28492004-10-21  Miklos Szeredi <miklos@szeredi.hu>
2850
2851	* fuse_main() now does not exit on error, rather it returns an
2852	error code
2853
2854	* Exported __fuse_setup() and __fuse_teardown() functions, which
2855	make it easier to implement a custom event loop.
2856
2857	* Use daemon() call to background the filesystem after mounting.
2858	This function closes the standard input, output and error and
2859	changes the current working directory to "/".
2860
28612004-10-14  Miklos Szeredi <miklos@szeredi.hu>
2862
2863	* Released 1.9
2864
28652004-10-09  Miklos Szeredi <miklos@szeredi.hu>
2866
2867	* Don't allow fuse_flush() to be interrupted (bug found by David
2868	Shaw)
2869
28702004-09-27  Miklos Szeredi <miklos@szeredi.hu>
2871
2872	* Add PID to fuse_context.  Patch by Steven James
2873
2874	* Change file handle type to 'unsigned long' in kernel interface
2875
28762004-09-22  Miklos Szeredi <miklos@szeredi.hu>
2877
2878	* A slight API change: fuse_get_context() doesn't need the "fuse"
2879	pointer, but the returned context contains it instead.  The
2880	fuse_get() function is not needed anymore, so it's removed.
2881
2882	* Fix mounting and umounting FUSE filesystem under another FUSE
2883	filesystem by non-root (bug spotted by Valient Gough)
2884
28852004-09-21  Miklos Szeredi <miklos@szeredi.hu>
2886
2887	* Fix deadlock in case of memory allocation failure.  Patch by
2888	Christian Magnusson
2889
28902004-09-16  Miklos Szeredi <miklos@szeredi.hu>
2891
2892	* Check memory allocation failures in libfuse
2893
28942004-09-14  Miklos Szeredi <miklos@szeredi.hu>
2895
2896	* Check temporary file creation failure in do_getdir().  Bug
2897	spotted by Terje Oseberg
2898
28992004-09-13  Miklos Szeredi <miklos@szeredi.hu>
2900
2901	* Allow "large_read" option for 2.6 kernels but warn of deprecation
2902
2903	* Make requests non-interruptible so race with FORGET is avoided.
2904	This is only a temporary solution
2905
2906	* Support compiling FUSE kernel module on 2.4.x UML kernels
2907
29082004-09-09  Miklos Szeredi <miklos@szeredi.hu>
2909
2910	* Fix bug in case two FORGETs for the same node are executed in
2911	the wrong order.  Bug spotted and endured for months by Franco
2912	Broi, and logfile for solution provided by Terje Oseberg
2913
29142004-09-01  Miklos Szeredi <miklos@szeredi.hu>
2915
2916	* Add -D_REENTRANT to the compile flags
2917
2918	* Add documentation of fuse internals by Terje Oseberg
2919
29202004-08-16  Miklos Szeredi <miklos@szeredi.hu>
2921
2922	* Change release method to be non-interruptible.  Fixes bug
2923	causing missing release() call when program which has opened files
2924	is killed (reported by Franco Broi and David Shaw)
2925
29262004-07-29  Miklos Szeredi <miklos@szeredi.hu>
2927
2928	* Add fuse_invalidate() to library API
2929
29302004-07-26  Miklos Szeredi <miklos@szeredi.hu>
2931
2932	* Check permissions in setattr if 'default_permissions' flag is
2933	set.  Bug spotted by Damjan Lango
2934
29352004-07-24  Miklos Szeredi <miklos@szeredi.hu>
2936
2937	* 'large_read' mount option removed for 2.6 kernels, since the
2938	default (dynamic read size) is better
2939
2940	* Extend kernel API with file handles.  A file handle is returned
2941	by open, and passed to read, write, flush, fsync and release.
2942	This is currently only used for debug output in the library.
2943
2944	* Security changes:
2945
2946	* Change the current directory to the mountpoint before checking
2947	the permissions and mount filesystem on "."
2948
2949	* By default don't modprobe the fuse module for non-root.  The old
2950	behavior can be restored with the '--enable-auto-modprobe' flag of
2951	./configure
2952
2953	* By default don't allow shared writable mappings for non-root.
2954	The old behavior can be restored with the 'user_mmap=1' module
2955	parameter
2956
29572004-07-23  Miklos Szeredi <miklos@szeredi.hu>
2958
2959	* Clean up mount option passing to fusermount and to fuse_new()
2960	BEWARE: this changes the userspace API slightly, and the command
2961	line usage of programs using fuse_main()
2962
29632004-07-20  Miklos Szeredi <miklos@szeredi.hu>
2964
2965	* Optimize reading under 2.6 kernels by issuing multiple page
2966	asynchronous read requests
2967
29682004-07-18  Miklos Szeredi <miklos@szeredi.hu>
2969
2970	* Only use redirty_page_for_writepage() for kernels >= 2.6.6
2971
29722004-07-16  Miklos Szeredi <miklos@szeredi.hu>
2973
2974	* Separate directory entry and inode attribute validity timer
2975
2976	* New write semaphore to stop page writeback during truncate
2977
2978	* Fsync now waits for all writes to complete before sending the
2979	request
2980
2981	* Optimization: if a page is completely written by
2982	fuse_commit_write(), clear the dirty flag and set the uptodate
2983	flag for that page
2984
2985	* Some memory cleanup at exit
2986
29872004-07-13  Miklos Szeredi <miklos@szeredi.hu>
2988
2989	* Add FUSE_HARD_REMOVE flag, and '-i' option to fuse main, which
2990	disable the "hide if open" behavior of unlink/rename.
2991
2992	* If temporary buffer allocation fails in raw read, fall back to a
2993	smaller buffer
2994
29952004-07-12  Miklos Szeredi <miklos@szeredi.hu>
2996
2997	* Fix bug in do_open() in libfuse: open count was incremented
2998	after the reply is sent so it could race with unlink/forget and
2999	cause an abort.
3000
30012004-07-08  Miklos Szeredi <miklos@szeredi.hu>
3002
3003	* When performing create or remove operation, refresh the parent's
3004	attributes on next revalidate, as i_nlink (and maybe size/time)
3005	could be inacurate.
3006
3007	* Use redirty_page_for_writepage() in fuse_writepage() for skipped
3008	pages (2.6 only)
3009
3010	* Set set_page_dirty address space operation (2.6 only)
3011
30122004-07-06  Miklos Szeredi <miklos@szeredi.hu>
3013
3014	* Minor fix in read:  print debug info even if read size is zero
3015
30162004-07-04  Miklos Szeredi <miklos@szeredi.hu>
3017
3018	* Fix race between truncate and writepage (fsx-linux now runs
3019	without error)
3020
30212004-07-02  Miklos Szeredi <miklos@szeredi.hu>
3022
3023	* Fix kernel hang on mkfifo under 2.4 kernels (spotted and patch
3024	by Mattias Wadman)
3025
3026	* Added option for direct read/write (-r)
3027
3028	* Fix revalidate time setting for newly created inodes
3029
3030	* Remove uid==0 check for '-x' option in fusermount (kernel checks
3031	this)
3032
3033	* fuse_main() only installs handlers for signals (out of INT, HUP,
3034	TERM, PIPE), for which no handler has yet been installed
3035
3036	* Add module option 'user_allow_other' which if set to non-zero
3037	will allow non root user to specify the 'allow_other' mount option
3038	('-x' option of fusermount)
3039
3040	* Fix deadlock between page writeback completion and truncate
3041	(bug found by Valient Gough with the fsx-linux utility)
3042
30432004-07-01  Miklos Szeredi <miklos@szeredi.hu>
3044
3045	* Change passing fuse include dir to 2.6 kernel make system more
3046	robust (fixes compile problems seen on SuSE 9.1 with updated 2.6
3047	kernel)
3048
30492004-06-30  Miklos Szeredi <miklos@szeredi.hu>
3050
3051	* Acquire inode->i_sem before open and release methods to prevent
3052	concurrent rename or unlink operations.
3053
3054	* Make __fuse_read_cmd() read only one command.  This allows
3055	multiplexing the fuse file descriptor with other event sources
3056	using select() or poll() (patch by Jeff Harris)
3057
3058	* Export 'exited' flag with __fuse_exited() (patch by Jeff Harris)
3059
30602004-06-27  Miklos Szeredi <miklos@szeredi.hu>
3061
3062	* Fix file offset wrap around at 4G when doing large reads
3063
30642004-06-24  Miklos Szeredi <miklos@szeredi.hu>
3065
3066	* Fix memory leak in open (Valient Gough)
3067
30682004-06-24  Miklos Szeredi <miklos@szeredi.hu>
3069
3070	* Add "close after delete" support to libfuse (patch by Valient
3071	Gough)
3072
3073	* Cancel all worker threads before exit in multithreaded mode
3074
30752004-06-23  Miklos Szeredi <miklos@szeredi.hu>
3076
3077	* Fix locking bugs
3078
3079	* Don't send reply to RELEASE
3080
3081	* Work with newer libtool (1.5a)
3082
3083	* Check for st_atim member of struct stat
3084
30852004-06-22  Miklos Szeredi <miklos@szeredi.hu>
3086
3087	* No request allocation needed on inode and file release
3088
30892004-06-21  Miklos Szeredi <miklos@szeredi.hu>
3090
3091	* Fix possible inode leak in userspace in case of unfinished
3092	lookup/mknod/mkdir/symlink/link operation.
3093
30942004-06-20  Miklos Szeredi <miklos@szeredi.hu>
3095
3096	* Fix some races and cleanups in fuse_read_super()
3097
30982004-06-19  Miklos Szeredi <miklos@szeredi.hu>
3099
3100	* Requests are allocated at open time
3101
31022004-06-03  Miklos Szeredi <miklos@szeredi.hu>
3103
3104	* Build shared library as well as static (using libtool)
3105
3106	* Change FUSE_MINOR_VERSION from 1 to 0.  I know it's illegal but
3107	there has not been a release with the previous minor number, and I
3108	hope nobody is using it for anything.
3109
3110	* Change fuse_main(), so that default behavior is to go into
3111	background if mount is successful.  '-f' and '-d' options disable
3112	backgrounding.  This fixes the "Why does my FUSE daemon hang?"
3113	newbie complaint.
3114
3115	* Cache ENOSYS (function not implemented) errors on *xattr, flush
3116	and fsync
3117
3118	* Don't call getdir method from open() only from first readdir().
3119	Open is sometimes just used to store the current directory
3120	(e.g. find)
3121
31222004-05-18  Miklos Szeredi <miklos@szeredi.hu>
3123
3124	* Added flush() call
3125
31262004-05-04  Miklos Szeredi <miklos@szeredi.hu>
3127
3128	* Extended attributes support for 2.4 (patch by Cody Pisto)
3129
31302004-04-20  Miklos Szeredi <miklos@szeredi.hu>
3131
3132	* Fixed parser with modversions (Mattias Wadman)
3133
31342004-04-19  Miklos Szeredi <miklos@szeredi.hu>
3135
3136	* Added mount option parser to 2.4 build
3137
31382004-04-13  Miklos Szeredi <miklos@szeredi.hu>
3139
3140	* Replaced binary mount data with text options
3141
3142	* Show FUSE specific mount options in /proc/mounts
3143
3144	* Check in fuse.h whether _FILE_OFFSET_BITS is set to 64
3145
31462004-04-09  Miklos Szeredi <miklos@szeredi.hu>
3147
3148	* Check some limits so userspace won't get too big requests
3149
31502004-04-05  Miklos Szeredi <miklos@szeredi.hu>
3151
3152	* Kill compile warning
3153
3154	* Upgraded user-mount patch for 2.6.5
3155
31562004-04-02  Miklos Szeredi <miklos@szeredi.hu>
3157
3158	* Add detection of user-mode-linux to configure
3159
31602004-03-31  Miklos Szeredi <miklos@szeredi.hu>
3161
3162	* fixed zero size case for getxattr and listxattr
3163
31642004-03-30  Miklos Szeredi <miklos@szeredi.hu>
3165
3166	* new fusermount flag '-z': lazy unmount, default is not lazy
3167
3168	* Extended attributes operations added (getxattr, setxattr,
3169	listxattr, removexattr)
3170
31712004-03-25  Miklos Szeredi <miklos@szeredi.hu>
3172
3173	* If filesystem doesn't define a statfs operation, then an
3174	all-zero default statfs is returned instead of ENOSYS
3175
31762004-03-24  Miklos Szeredi <miklos@szeredi.hu>
3177
3178	* Add FS_BINARY_MOUNTDATA filesystem flag for kernels > 2.6.4
3179
31802004-03-09  Miklos Szeredi <miklos@szeredi.hu>
3181
3182	* Fix for uClinux (Christian Magnusson)
3183
31842004-03-02  Miklos Szeredi <miklos@szeredi.hu>
3185
3186	* fuse_main() adds "-n progname" to the fusermount command line
3187
3188	* More kernel interface changes:
3189
3190	* Lookup/getattr return cache timeout values
3191
31922004-02-25  Miklos Szeredi <miklos@szeredi.hu>
3193
3194	* Clean up option parsing in fuse_main()
3195
3196	* Added fuse_get() function which returns the fuse object created
3197	by fuse_main()
3198
31992004-02-20  Miklos Szeredi <miklos@szeredi.hu>
3200
3201	* removed old way of mounting (fusermount mountpoint program)
3202
3203	* more kernel interface changes:
3204
3205	* added nanosecond precision to file times
3206
3207	* removed interface version from mount data
3208
3209	* added /proc/fs/fuse/version which contains MAJOR.MINOR
3210
32112004-02-19  Miklos Szeredi <miklos@szeredi.hu>
3212
3213	* statfs library API changed to match other methods.  Since this
3214	  is not backward compatible FUSE_MAJOR_VERSION is changed to 2
3215
3216	* kernel interface changes follow:
3217
3218	* statfs changed to 64 bits, added 'bavail' field
3219
3220	* add generation number to lookup result
3221
3222	* optimized mknod/mkdir/symlink/link (no separate lookup is
3223	needed)
3224
3225	* rdev size increased to 32 bits for mknod
3226
3227	* kernel interface version changed to 3.1
3228
32292004-02-18  Miklos Szeredi <miklos@szeredi.hu>
3230
3231	* user-mount upgraded for 2.6.3 kernel
3232
32332004-02-17  Miklos Szeredi <miklos@szeredi.hu>
3234
3235	* Added user-mount.2.6.2-rc3.patch
3236
3237	* Add FS_SAFE flag to fuse filesystem
3238
3239	* fusermount should allow (un)mounting for non-root even if not
3240	suid-root
3241
32422004-02-12  Miklos Szeredi <miklos@szeredi.hu>
3243
3244	* Remove MS_PERMISSION mount flag (that means something else now)
3245
32462004-02-10  Miklos Szeredi <miklos@szeredi.hu>
3247
3248	* Added check for i_size_read/write functions to configure.in
3249	(patch by Valient Gough)
3250
32512004-02-06  Miklos Szeredi <miklos@szeredi.hu>
3252
3253	* Fixed writing >= 2G files
3254
3255	* Check file size on open (with generic_file_open())
3256
3257	* Readpage calls flush_dcache_page() after storing data
3258
3259	* Use i_size_read/write for accessing inode->i_size
3260
3261	* Make loopback mount of a fuse file work
3262
32632004-02-04  Miklos Szeredi <miklos@szeredi.hu>
3264
3265	* Released 1.1
3266
32672004-01-29  Miklos Szeredi <miklos@szeredi.hu>
3268
3269	* Properly check if the inode exists in fuse_invalidate
3270
32712004-01-27  Miklos Szeredi <miklos@szeredi.hu>
3272
3273	* Added -q option for fusermount
3274
3275	* fuse_unmount() now uses -q option of fusermount, so no error is
3276	printed if the cause of the program exit is that the filesystem
3277	has already been unmounted
3278
3279	* Fix i_nlink correctness after rmdir/unlink
3280
32812004-01-26  Miklos Szeredi <miklos@szeredi.hu>
3282
3283	* Released 1.1-pre2
3284
32852004-01-26  Miklos Szeredi <miklos@szeredi.hu>
3286
3287	* Fix typo (thanks Marcos Dione)
3288
3289	* Compile fixes for 2.4 kernels
3290
32912004-01-23  Miklos Szeredi <miklos@szeredi.hu>
3292
3293	* Fix CONFIG_MODVERSIONS compile on 2.6
3294
32952004-01-22  Miklos Szeredi <miklos@szeredi.hu>
3296
3297	* Write all pending data before a RELEASE operation
3298
3299	* Suppress 'Bad file descriptor' warning on exit
3300
3301	* Replaced fusermount option '-d xxx' with '-n xxx' so it doesn't
3302	get confused with '-d' of fuse_main() (sorry about this change)
3303
3304	* New fusermount option '-l' which enables big reads.  Big reads
3305	are now disabled by default.
3306
3307	* fuse_main() can accept fusermount arguments after a '--'
3308
33092004-01-19  Miklos Szeredi <miklos@szeredi.hu>
3310
3311	* Support for exporting filesystem over NFS (see README.NFS)
3312
33132004-01-14  Miklos Szeredi <miklos@szeredi.hu>
3314
3315	* Support non-blocking writepage on 2.6.  This makes FUSE behave
3316	much more nicely in low-memory situations
3317
3318	* Fix 32-bit dev handling in getattr and mknod for 2.6 kernels.
3319	(Note: the mknod method does not yet use 32bit device number)
3320
33212004-01-13  Miklos Szeredi <miklos@szeredi.hu>
3322
3323	* Code cleanups
3324
33252004-01-07  Miklos Szeredi <miklos@szeredi.hu>
3326
3327	* Released 1.1-pre1
3328
33292004-01-06  Miklos Szeredi <miklos@szeredi.hu>
3330
3331	* Integrated 2.6 kernel support patch by Michael Grigoriev
3332
3333	* Improvements and cleanups for 2.6 kernels
3334
33352004-01-05  Miklos Szeredi <miklos@szeredi.hu>
3336
3337	* Added -d option to fusermount
3338
33392003-12-15  Miklos Szeredi <miklos@szeredi.hu>
3340
3341	* Added major+minor version to library API, and minor version to
3342	  kernel API
3343
33442003-12-13  David McNab <david@rebirthing.co.nz>
3345
3346	* Implemented fsync support in examples/example.py
3347
3348	* Implemented 'fsync' and 'statfs' methods in python
3349	  interface
3350
33512003-12-12  Miklos Szeredi <miklos@szeredi.hu>
3352
3353	* Make it compile on 2.4.19.
3354
3355	* Add fsync operation (write file failed on xemacs & vi)
3356
33572003-12-12  David McNab <david@rebirthing.co.nz>
3358
3359	* Added distutils support to the python module, as per standard
3360	  python development practice
3361
33622003-12-11  Miklos Szeredi <miklos@szeredi.hu>
3363
3364	* Add file locking for mount/unmount (based on patch by Valient
3365	Gough)
3366
33672003-12-11  David McNab <david@rebirthing.co.nz>
3368
3369	* Python filesystem - was broken with python2.3, now fixed:
3370	   - changed PyTuple_* calls to PySequence_*, because os.lstat
3371	     is no longer returning a pure tuple
3372	   - changed PyInt_Check() calls to also call PyLong_Check,
3373	     to cover for cases (eg os.lstat) where longs are returned
3374	   - Added support for file 'release' handling, which IMO is
3375	     essential since this signals to a FS that writes to a file
3376	     are complete (and therefore the file can now be disposed of
3377	     meaningfully at the python filesystem's discretion)
3378	   - Added '__init__' handler to base Fuse class, which allows
3379	     your Python class to know the mountpoint and mount args,
3380	     as attributes myfs.mountpoint, myfs.optlist, myfs.optdict
3381
3382	* General:
3383	   - added 'mount.fuse' script (in util/ dir), which is meant to be
3384	     symlinked from /sbin, and which allows FUSE filesystems to
3385	     be mounted with the 'mount' command, and listed in fstab;
3386	     also, mount arguments get passed to your filesystem
3387
3388
33892003-11-04  Miklos Szeredi <miklos@szeredi.hu>
3390
3391	* Fix kernel version detection (again).  Bugreport by Peter Levart
3392
33932003-11-03  Miklos Szeredi <miklos@szeredi.hu>
3394
3395	* Applied read combining patch by Michael Grigoriev (tested by
3396	Valient Gough and Vincent Wagelaar)
3397
33982003-10-22  Miklos Szeredi <miklos@szeredi.hu>
3399
3400	* Mtab handling fix in fusermount by "Valient Gough" (SF patch
3401	#766443)
3402
34032003-10-13  Miklos Szeredi <miklos@szeredi.hu>
3404
3405	* Error code fixes in kernel module
3406
34072003-10-04  Miklos Szeredi <miklos@szeredi.hu>
3408
3409	* kernel version detection fix
3410
3411	* fusermount now uses "lazy" umount option
3412
3413	* fusermount can use modprobe with module-init-tools
3414
34152003-09-08  Miklos Szeredi <miklos@szeredi.hu>
3416
3417	* Integrated caching patch by Michael Grigoriev
3418
3419	* Added "Filesystems" file with descriptions of projects using
3420	FUSE
3421
3422	* Added patch by Michael Grigoriev to allow compliation of FUSE
3423	kernel module for 2.6 kernels
3424
34252003-06-02  Miklos Szeredi <miklos@szeredi.hu>
3426
3427	* And another spec-file fix by Achim Settelmeier
3428
34292003-05-26  Miklos Szeredi <miklos@szeredi.hu>
3430
3431	* Spec-file fix by Achim Settelmeier
3432
34332003-03-10  Miklos Szeredi <miklos@szeredi.hu>
3434
3435	* Fix umount oops (found by Samuli Kärkkäinen)
3436
34372003-03-05  Miklos Szeredi <miklos@szeredi.hu>
3438
3439	* Merge of fuse_redhat.spec and fuse.spec by Achim Settelmeier
3440
34412003-03-04  Miklos Szeredi <miklos@szeredi.hu>
3442
3443	* Updated fuse.spec file (Achim Settelmeier)
3444
34452003-02-19  Miklos Szeredi <miklos@szeredi.hu>
3446
3447	* Version 1.0 released
3448
34492003-02-12  Miklos Szeredi <miklos@szeredi.hu>
3450
3451	* SuSE compilation fix by Juan-Mariano de Goyeneche
3452
34532002-12-10  Miklos Szeredi <miklos@szeredi.hu>
3454
3455	* The release() VFS call is now exported to the FUSE interface
3456
34572002-12-05  Miklos Szeredi <miklos@szeredi.hu>
3458
3459	* 64 bit file offset fixes in the fuse kernel module
3460
3461	* Added function 'fuse_exit()' which can be used to exit the main
3462	loop
3463
34642002-12-03  Miklos Szeredi <miklos@szeredi.hu>
3465
3466	* Added _FILE_OFFSET_BITS=64 define to fuse.h.  Note, that this is
3467	an incompatible interface change.
3468
34692002-10-28  Miklos Szeredi <miklos@szeredi.hu>
3470
3471	* Portablility fix (bug reported by C. Chris Erway)
3472
34732002-10-25  Miklos Szeredi <miklos@szeredi.hu>
3474
3475	* Use Mark Glines' fd passing method for default operation instead
3476	of old reexec
3477
34782002-10-22  Miklos Szeredi <miklos@szeredi.hu>
3479
3480	* fix "Stale NFS file handle" bug caused by changes in 2.4.19
3481
34822002-10-22  Miklos Szeredi <miklos@szeredi.hu>
3483
3484	* fix incompatiblity with Red Hat kernels, with help from Nathan
3485	Thompson-Amato.
3486
34872002-04-18  Mark Glines <mark@glines.org>
3488
3489	* added an alternative to fuse_mount(), called
3490      fuse_mount_ioslave(), which does not need to reexec the
3491      FUSE program.
3492	* added a small helper util needed by fuse_mount_ioslave().
3493
34942002-03-16  Mark Glines <mark@glines.org>
3495
3496	* use struct fuse_statfs everywhere possible to avoid problems
3497      with the headerfiles changing struct statfs member sizes
3498
34992002-03-01  Miklos Szeredi <miklos@szeredi.hu>
3500
3501	* Another RPM spec file for RedHat >= 7 by Ian Pilcher
3502
35032002-01-14  Miklos Szeredi <miklos@szeredi.hu>
3504
3505	* RPM support by Achim Settelmeier
3506
35072002-01-09  Miklos Szeredi <miklos@szeredi.hu>
3508
3509	* Version 0.95 released
3510
35112002-01-09  Miklos Szeredi <miklos@szeredi.hu>
3512
3513	* Revaidate all path components not just the last, this means a
3514	very small performance penalty for being more up-to-date.
3515
35162002-01-08  Miklos Szeredi <miklos@szeredi.hu>
3517
3518	* Update and fix python interface
3519
35202002-01-07  Mark Glines <mark@glines.org>
3521
3522	* Added statfs() support to kernel, lib, examples, and perl!
3523
35242001-12-26  Miklos Szeredi <miklos@szeredi.hu>
3525
3526	* Better cross compilation support
3527
3528	* Ported to Compaq IPAQ
3529
35302001-12-20  Miklos Szeredi <miklos@szeredi.hu>
3531
3532	* Added function fuse_get_context() to library API (inspired by
3533	patch from Matt Ryan)
3534
3535	* Added flags to fusermount and to kernel interface to control
3536	permission checking
3537
3538	* Integrated fuse_set_operations() into fuse_new()
3539
35402001-12-08  Miklos Szeredi <miklos@szeredi.hu>
3541
3542	* Applied header protection + extern "C" patch by Roland
3543	Bauerschmidt
3544
35452001-12-02  Miklos Szeredi <miklos@szeredi.hu>
3546
3547	* Added perl bindings by Mark Glines
3548
35492001-11-21  Miklos Szeredi <miklos@szeredi.hu>
3550
3551	* Cleaned up way of mounting simple filesystems.
3552
3553	* fuse_main() helper function added
3554
35552001-11-18  Miklos Szeredi <miklos@szeredi.hu>
3556
3557	* Optimized read/write operations, so that minimal copying of data
3558	is done
3559
35602001-11-14  Miklos Szeredi <miklos@szeredi.hu>
3561
3562	* Python bindings by Jeff Epler added
3563
35642001-11-13  Miklos Szeredi <miklos@szeredi.hu>
3565
3566	* Fixed vfsmount reference leak in fuse_follow_link
3567
3568	* FS blocksize is set to PAGE_CACHE_SIZE, blksize attribute from
3569	userspace is ignored
3570
35712001-11-09  Miklos Szeredi <miklos@szeredi.hu>
3572
3573	* Started ChangeLog
3574