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