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