1 2006-09-01 Miklos Szeredi <miklos@szeredi.hu>
3 * Fix recursive lock bug in interrupt handling
5 * Add utimes() method to highlevel interface, which supports
6 setting times with nanosecond resolution
8 2006-08-18 Miklos Szeredi <miklos@szeredi.hu>
10 * kernel: fix page leak if fuse_readpages() failed in it's
11 initialization. Bug found and original patch from Alexander
14 * For linux kernels >=2.6.18 (2.6.19 if using the fuse module from
15 the kernel tree) the statfs method will receive the path within
16 the filesystem on which the stat(v)fs syscall was called
18 * fusermount: try to modprobe fuse module if invoked by root and
19 unable to open device. This is needed with udev, since the device
20 node will be created only when the module is inserted, hence
21 module autoloading won't work. Reported by Szakacsits Szabolcs
23 2006-07-30 Miklos Szeredi <miklos@szeredi.hu>
25 * fusermount: if selinux is active, restore the original file's
26 security context in unmount_rename(). Redhat bugzilla id 188561.
27 Patch from Yves Perrenoud
29 * Add POSIX file locking operation to high level library
31 * Initialize context for unlink of hidden files on umount. Bug
32 reported by Tim Stoakes
34 2006-07-14 Miklos Szeredi <miklos@szeredi.hu>
36 * Multiple release() calls can race with each other, resulting in
37 the hidden file being deleted before the last release finishes.
38 Bug found and patch tested by Mark Huijgen
40 2006-07-05 Miklos Szeredi <miklos@szeredi.hu>
42 * fusermount: if /dev/fuse doesn't exist, suggest modprobing fuse;
43 this makes sense on systems using udev. Reported by Szakacsits
46 2006-06-29 Miklos Szeredi <miklos@szeredi.hu>
50 2006-06-29 Miklos Szeredi <miklos@szeredi.hu>
52 * Support in kernel module for file locking and interruption. The
53 same functionality is available in official kernels >= 2.6.18
55 2006-06-28 Miklos Szeredi <miklos@szeredi.hu>
57 * Add POSIX file locking support
59 * Add request interruption
61 2006-06-06 Miklos Szeredi <miklos@szeredi.hu>
63 * Add missing pthread_rwlock_destroy(). Patch from Remy Blank
65 2006-06-05 Remy Blank <remy.blank@pobox.com>
67 * lib: canonicalize mount point in fuse_helper_opt_proc() so that
68 unmounting succeeds even if mount point was relative.
70 2006-06-04 Csaba Henk <csaba.henk@creo.hu>
72 * lib: fix emergency umount in helper.c when malloc fails.
73 (The way it was done would end up in a segfault.)
75 2006-06-01 Csaba Henk <csaba.henk@creo.hu>
77 * lib: adjust threading related compiler flags.
78 Switch to "-pthread" from "-lpthread" as that's the preferred
79 one on several platforms. Consulted with Terrence Cole and
82 2006-05-08 Miklos Szeredi <miklos@szeredi.hu>
84 * lib: search fusermount in installation directory (bindir) as
87 2006-05-03 Miklos Szeredi <miklos@szeredi.hu>
89 * lib: fix compilation if CLOCK_MONOTONIC is not defined.
90 Reported by Christian Magnusson
92 2006-04-23 Csaba Henk <csaba.henk@creo.hu>
94 * lib: make FreeBSD mount routine recognize if kernel features
95 backgrounded init and if it does, run the mount util in foreground
98 2006-04-21 Miklos Szeredi <miklos@szeredi.hu>
100 * kernel: fix fput deadlock fix, the lockless solution could lead
101 to "VFS: busy inodes after umount..."
103 * kernel: fix race between checking and setting file->private_data
104 for the device. Found by Al Viro
106 2006-04-11 Miklos Szeredi <miklos@szeredi.hu>
108 * kernel: remove request pool, instead allocate requests on
109 demand. Account the number of background requests, and if they go
110 over a limit, block the allocation of new requests.
112 * kernel: fix deadlock if backgrounded request holds the last
113 reference to the super block
115 * kernel: don't use fuse_reset_request() during direct I/O
117 2006-04-06 Csaba Henk <csaba.henk@creo.hu>
119 * lib: Let FreeBSD mount option parsing routine recognize "no"
120 prefixes for FUSE specific options as well
122 2006-04-01 Miklos Szeredi <miklos@szeredi.hu>
124 * lib: Add missing rwlock initialization. Patch by Ryan Bradetich
126 2006-03-17 Miklos Szeredi <miklos@szeredi.hu>
130 * fuse_main(), fuse_setup() and fuse_new() have an additionl
133 * fuse_mount() returns a 'struct fuse_chan' pointer instead of a
136 * fuse_unmount() receives a 'struct fuse_chan' pointer. It
137 destroys the given channel
139 * fuse_teardown() no longer has a file descriptor parameter
141 * new exported functions: fuse_session_remove_chan(),
142 fuse_get_session(), fuse_daemonize()
144 * fuse_chan_recv() may now return a new channel which will be used
147 2006-03-16 Miklos Szeredi <miklos@szeredi.hu>
149 * Released 2.6.0-pre2
151 2006-03-16 Miklos Szeredi <miklos@szeredi.hu>
153 * Don't unmount if already unmounted. This fixes a problem seen
154 in the following situation: Lazy unmount a busy filesystem; Mount
155 a new one in top; When the first finally unmounts, the second also
156 unmounts. Reported by Franco Broi
158 2006-03-15 Miklos Szeredi <miklos@szeredi.hu>
160 * lowlevel lib: use indirect function calls instead of a
161 switch/case construct. Besides increased efficiency it helps
162 maintainability & readability too. Patch from Florin Malita
164 2006-03-13 Miklos Szeredi <miklos@szeredi.hu>
166 * kernel: replace global spinlock with a per-connection spinlock
168 2006-03-10 Miklos Szeredi <miklos@szeredi.hu>
170 * Fix source compatibility breakage for fuse_unmount(). Report
173 2006-03-02 Miklos Szeredi <miklos@szeredi.hu>
175 * Fix O_ASYNC handling in fuse_dev_release(). From Jeff Dike
177 2006-03-01 Miklos Szeredi <miklos@szeredi.hu>
179 * Add O_ASYNC and O_NONBLOCK support to FUSE device. Patch by
182 * Renamed fuse_chan_receive() to fuse_chan_recv() and changed
183 interface to return -errno in case of error.
185 2006-03-01 Csaba Henk <csaba.henk@creo.hu>
187 * libfuse: pass device file descriptor to fuse_unmount(), rewrite
188 FreeBSD implementation so that it uses libc (sysctl backed) instead
189 of an embdedded script (kmem backed). Adjust the control flow of
190 hello_ll so that device doesn't get closed before unmount attempt.
192 2006-02-25 Miklos Szeredi <miklos@szeredi.hu>
194 * Lowlevel lib: return all-zero statvfs data if filesystem doesn't
195 implement method. This is needed on FreeBSD, and nicer on Linux
196 too. Highlevel lib already did this. Reported by Csaba Henk
198 * Fix negative entry handling. There was a bug, that negative
199 lookups with timeouts (nodeid == 0) returned -EIO.
201 2006-02-23 Miklos Szeredi <miklos@szeredi.hu>
203 * Fix race between RELEASE and UNLINK, which might leave
204 .fuse_hidden* files around
206 2006-02-21 Miklos Szeredi <miklos@szeredi.hu>
208 * fusexmp_fh: implement flush() method and call close() on the
209 open file descriptor. This is needed if used on an NFS
210 filesystem, which buffers data until file is closed. Franco Broi
211 spotted the situation when 'cp -p' failed to set the modification
212 time because of this.
214 2006-02-20 Miklos Szeredi <miklos@szeredi.hu>
216 * Released 2.6.0-pre1
218 2006-02-19 Miklos Szeredi <miklos@szeredi.hu>
220 * libfuse: fix use-after-free bug in interruptred reply_entry().
223 * libfuse: fix wrong symbol versioning for fuse_mount. Debian bug
224 ID: 352631. Found by Stéphane Rosi
226 2006-02-17 Miklos Szeredi <miklos@szeredi.hu>
228 * Lowlevel lib: Unify fuse_dirent_size() and fuse_add_dirent()
229 into a single function fuse_add_direntry(). This cleans up the
230 interface and makes it possible to do stacking.
232 2006-02-16 Miklos Szeredi <miklos@szeredi.hu>
234 * Fix rare race betweeen abort and release caused by failed iget()
235 in fuse_create_open().
237 * Add 'ac_attr_timeout' option e.g. for filesystems which do their
238 own attribute caching.
240 2006-02-15 Miklos Szeredi <miklos@szeredi.hu>
242 * Work around FreeBSD runtime linker "feature" which binds an old
243 version of a symbol to internal references if the symbol has more
244 than one version. This resulted in infinite recursion in
245 fuse_lowlevel_new_compat25().
247 2006-02-10 Csaba Henk <csaba.henk@creo.hu>
249 * Refine clock_gettime() querying so that linker options
250 shall be set as it's appropriate for the target platform.
252 2006-02-09 Miklos Szeredi <miklos@szeredi.hu>
254 * Fix udev rule syntax. Reported by Nix
256 2006-02-08 Miklos Szeredi <miklos@szeredi.hu>
258 * In some cases udev rule seems to be ineffective when installed
259 as 40-fuse.rules but work as 60-fuse.rules. Reported by John Hunt
261 2006-02-03 Miklos Szeredi <miklos@szeredi.hu>
263 * Fix compilation when build directory is different from source
264 directory. Reported by Frédéric L. W. Meunier
266 2006-02-02 Miklos Szeredi <miklos@szeredi.hu>
268 * Fix even bigger bug introduced in fix for request_end() on
269 2006-01-14. Reported by Gal Rosen
271 2006-01-30 Miklos Szeredi <miklos@szeredi.hu>
273 * highlevel-lib: add 'auto_cache' option. This caches file data
274 based on modification time and size
276 2006-01-20 Miklos Szeredi <miklos@szeredi.hu>
278 * Sanitize storage type and help message in mount_bsd.c. Patch
281 * fuse_opt: add new helper constants FUSE_OPT_KEY_KEEP and
284 * Add options 'max_readahead', 'sync_read' and 'async_read'
286 * Kernel ABI version 7.6:
288 * Negotiate the 'max_readahead' value and 'async_read' flags with
289 userspace in the INIT method
291 * Add connection info to ->init() methods to both lowlevel and
294 * Fall back to synchronous read() behavior if either library or
295 userspace filesystem is using the old interface version. This is
296 needed so non-updated filesystems won't be confused by the
297 different read() behavior
299 2006-01-19 Miklos Szeredi <miklos@szeredi.hu>
301 * lib: if "fsname=" option was given, pass it to fusermount
303 * fuse_opt: add new fuse_opt_insert_arg() function, which is
304 needed by filesystems to implement some argument manipulations
307 * fuse_opt: fix memory leak in handling "--" option
309 2006-01-18 Miklos Szeredi <miklos@szeredi.hu>
311 * kernel: fix detection of case when fuse is not configured into
312 the kernel either as module or built-in
314 * fuse_opt.h: fix incompatibility with C++ compilers by renaming
315 'template' structure member to 'templ'. Reported by Takashi Iwai
317 * fuse.h: fix compatibility bugs. Patch by Yura Pakhuchiy
319 * kernel: support version 2.6.16 (i_sem -> i_mutex)
321 2006-01-16 Miklos Szeredi <miklos@szeredi.hu>
323 * Added (again) asynchronous readpages support
325 * Each connection now shows up under /sys/fs/fuse/connections
327 * Connection attributes exported to sysfs: 'waiting' number of
328 waiting requests; 'abort' abort the connection
330 * Connection may be aborted through either the sysfs interface or
331 with 'umount -f mountpoint'
333 2006-01-14 Miklos Szeredi <miklos@szeredi.hu>
337 2006-01-14 Miklos Szeredi <miklos@szeredi.hu>
339 * kernel: fix a couple of bugs
341 * Order of request_end() and fuse_copy_finish() was wrong.
342 Posthumous note: Franco Broi managed to exploit this, though it
343 seemed quite impossible
345 * request_end() used request pointer after decrementing refcount
347 * Clearing ->connected or ->mounted connection flags could race
348 with setting other bitfields not protected with a lock
350 2006-01-10 Miklos Szeredi <miklos@szeredi.hu>
352 * kernel: add necessary compile flags for 2.4.X/x86_64.
353 Report from Sean Ziegeler
355 2006-01-09 Miklos Szeredi <miklos@szeredi.hu>
357 * Released 2.5.0-pre2
359 2006-01-09 Miklos Szeredi <miklos@szeredi.hu>
361 * Applied patch from Csaba Henk, to update mount_bsd to new
362 fuse_mount() semantics
364 * Ignore auto,noauto,... options in mount.fuse. Reported by Frank
365 Steiner and Don Taber
367 * fusermount: add 'dirsync' mount option
369 2006-01-07 Miklos Szeredi <miklos@szeredi.hu>
371 * Improved help reporting and added version reporting to library
373 2006-01-06 Miklos Szeredi <miklos@szeredi.hu>
375 * Change working directory to "/" even if running in the
376 foreground. Patch from Jonathan Brandmeyer
378 * Changed lots of functions to use 'struct fuse_args' instead of
379 separate argc and argv
381 * Added fuse_parse_cmdline(), fuse_set_signal_handlers() and
382 fuse_remove_signal_handlers() functions, so that it's now pretty
383 easy to get all the functionality of fuse_main() with a filesystem
384 using the lowlevel API.
386 2006-01-02 Miklos Szeredi <miklos@szeredi.hu>
388 * mount.fuse: the 'user' option should be ignored. Report and
391 * mount.fuse: export PATH in the right place. Report and patch
392 from Hannes Schweizer
394 2005-12-16 Miklos Szeredi <miklos@szeredi.hu>
396 * Clean up the option parsing interface slightly, by creating an
397 "argument list" structure, that contains the argument vector and
400 2005-12-15 Miklos Szeredi <miklos@szeredi.hu>
402 * fusermount: check if /mnt/mtab is a symlink and don't modify it
405 * kernel: simplify request size limiting. INIT only contains
406 maximum write size, maximum path component size remains fixed at
407 1024 bytes, and maximum xattr size depends on read buffer.
409 2005-12-14 Miklos Szeredi <miklos@szeredi.hu>
411 * Fix readdir() failure on x86_64, of 32bit programs compiled
412 without largefile support. Bug report and help from Anthony
415 * If lookup returns invalid mode, return -EIO instead of creating
418 * Add current output argument vector to option processing
421 2005-12-12 Miklos Szeredi <miklos@szeredi.hu>
423 * Fix stale code in ifdef FreeBSD. Patch from Csaba Henk
425 2005-12-09 Miklos Szeredi <miklos@szeredi.hu>
427 * Released 2.5.0-pre1
429 2005-12-09 Miklos Szeredi <miklos@szeredi.hu>
431 * libfuse: added option parsing interface, defined in
434 2005-12-07 Miklos Szeredi <miklos@szeredi.hu>
436 * Return EIO for file operations (read, write, fsync, flush) on
437 open files whose inode has become "bad". Inodes will be marked
438 "bad" if their type changes. Bug report by Csaba Henk
440 2005-12-06 Miklos Szeredi <miklos@szeredi.hu>
442 * Use bigger request buffer size. write() did not work on archs
443 with > 4k page size, Bug report by Mark Haney
447 * Extend INIT reply with data size limits
449 2005-12-02 Miklos Szeredi <miklos@szeredi.hu>
451 * Fix memory leak in fuse_read_cmd()/fuse_process_cmd(). Bug
452 reported by Vincenzo Ciancia
454 * Handle exit-by-umount in fuse_read_cmd()
456 2005-11-29 Miklos Szeredi <miklos@szeredi.hu>
458 * Check if '-msoft-float' option is supported by compiler when
459 configuring for a 2.4.x kernel. Bug report by Mark Haney
461 * In multithreaded loop send a TERM signal to the main thread if
462 one of the other threads exit. Needed on FreeBSD for a clean exit
463 on umount. Should not cause any harm on Linux either
465 2005-11-28 Miklos Szeredi <miklos@szeredi.hu>
467 * Fix bug in 32-bit file handle compatibility
469 2005-11-27 Miklos Szeredi <miklos@szeredi.hu>
471 * Block TERM, INT, HUP and QUIT signals in all but the main
472 thread. According to POSIX it's not specified which thread will
473 receive these signals.
477 * Check for directory aliasing on mkdir, not just on lookup
479 * Check for special node ID values in create+open operation
481 * Sync with -mm: readv, writev, aio_read and aio_write methods
482 added to file operations
484 * Cleanups: lookup code, page offset calculation
486 * ABI stepped to 7.4, changes:
488 * frsize member added to fuse_kstatfs structure
490 * added support for negative entry caching: on lowlevel API if
491 fuse_entry_param::ino is set to zero in reply to a lookup request,
492 the kernel will cache the dentry for the specified amount of time.
494 * libfuse: added 'negative_timeout' option: specifies how much
495 negative entries should be cached. Default is zero, to be
496 compatible with prior versions
498 2005-11-22 Miklos Szeredi <miklos@szeredi.hu>
500 * Add detection of mainline FUSE code in running kernel
502 2005-11-21 Miklos Szeredi <miklos@szeredi.hu>
504 * Don't use async cancelation in multithreaded loop. This makes
505 it more portable to systems where read() is not async cancel safe.
506 Report from Andriy Gapon
508 2005-11-20 Miklos Szeredi <miklos@szeredi.hu>
510 * Warn if API version 11 compatibility is requested
512 2005-11-17 Miklos Szeredi <miklos@szeredi.hu>
516 * fusermount: don't allow mountpoints with '\n', '\t', or '\\' in
517 them, because it corrupts /etc/mtab. Found by Thomas Biege
520 * libfuse: don't use system() to invoke 'fusermount -u ...'
521 because it breaks mountpoints with spaces in them into multiple
524 2005-11-16 Miklos Szeredi <miklos@szeredi.hu>
526 * Merge library part of FreeBSD port. Patch by Csaba Henk
528 2005-11-11 Miklos Szeredi <miklos@szeredi.hu>
530 * Use 64bit type for file handle, so the full range supported by
531 the kernel interface is available to applications
533 2005-11-10 Miklos Szeredi <miklos@szeredi.hu>
535 * Moved mountpoint argument checking from fuse_parse_cmdline() to
536 fuse_mount() in preparation to FreeBSD merge.
538 2005-11-08 Miklos Szeredi <miklos@szeredi.hu>
540 * Remove unneeded close() from fuse_teardown(). Spotted by Csaba
543 2005-11-07 Miklos Szeredi <miklos@szeredi.hu>
545 * Make the statfs change backwards compatible.
547 2005-11-06 Miklos Szeredi <miklos@szeredi.hu>
549 * Change ->statfs() method to use 'struct statvfs' instead of
550 'struct statfs'. This makes the API more portable since statvfs()
553 2005-10-28 Miklos Szeredi <miklos@szeredi.hu>
555 * Add fgetattr() method, which currently will only be called after
556 a successful call to a create() method.
558 2005-10-26 Miklos Szeredi <miklos@szeredi.hu>
560 * Change kernel ABI version to 7.3
562 * Add ACCESS operation. This is called from the access() system
563 call if 'default_permissions' mount option is not given, and is
564 not called on kernels 2.4.*
566 * Add atomic CREATE+OPEN operation. This will only work with
567 2.6.15 (presumably) or later Linux kernels.
569 * Add ftruncate() method. This will only work with 2.6.15
570 (presumably) or later Linux kernels.
572 * Fix kernel module compile if kernel source and build directories
573 differ. Report and initial patch by John Eastman
575 2005-10-18 Miklos Szeredi <miklos@szeredi.hu>
577 * lib: optimize buffer reallocation in fill_dir.
579 2005-10-17 Miklos Szeredi <miklos@szeredi.hu>
583 2005-10-14 Miklos Szeredi <miklos@szeredi.hu>
585 * libfuse: add debug for write result (by Shaun Jackman) and
586 warnings for too large read/write result
588 2005-10-11 Miklos Szeredi <miklos@szeredi.hu>
590 * Spelling fixes, thanks to Ioannis Barkas
592 2005-10-10 Miklos Szeredi <miklos@szeredi.hu>
594 * fuse_common.h: use extern "C". Thanks to Valient Gough for the
597 2005-10-07 Miklos Szeredi <miklos@szeredi.hu>
599 * highlevel-lib: init() and destroy() methods didn't have an
600 initialized fuse_context. Bug reported by Tim Stoakes
602 2005-10-04 Miklos Szeredi <miklos@szeredi.hu>
606 2005-10-03 Miklos Szeredi <miklos@szeredi.hu>
608 * Add documentation to fuse_lowlevel.h
612 * Remove definitions of unused FATTR_CTIME / FUSE_SET_ATTR_CTIME
614 * Move fuse_mount() and fuse_unmount() to fuse_common.h
616 * Change the return type of fuse_reply_none() from int to void.
618 2005-09-30 Miklos Szeredi <miklos@szeredi.hu>
620 * kernel: NFS exporting leaked dentries. Bug found and fixed by
623 2005-09-29 Miklos Szeredi <miklos@szeredi.hu>
625 * fusermount: fix error message, when unable to open /dev/fuse.
626 Report by Balázs Pozsár
628 2005-09-28 Miklos Szeredi <miklos@szeredi.hu>
630 * UClibc fixes from Christian Magnusson
632 2005-09-27 Miklos Szeredi <miklos@szeredi.hu>
634 * Added NAME="%k" to util/udev.rules. Fix by Mattias Wadman.
636 2005-09-26 Miklos Szeredi <miklos@szeredi.hu>
640 2005-09-26 Miklos Szeredi <miklos@szeredi.hu>
642 * fusermount: allow user umount in the case when /etc/mtab is a
643 symlink to /proc/mounts. Reported by Balázs Pozsár.
645 2005-09-23 Miklos Szeredi <miklos@szeredi.hu>
647 * Check for special node ID values in lookup and creation
649 2005-09-22 Miklos Szeredi <miklos@szeredi.hu>
651 * Slight optimization in returning EINVAL error in case of an open
654 2005-09-20 Miklos Szeredi <miklos@szeredi.hu>
656 * Remove '--enable-auto-modprobe' configure flag. Module
657 auto-loading is now handled by the kernel.
659 2005-09-15 Miklos Szeredi <miklos@szeredi.hu>
661 * Install UDEV rule file, so /dev/fuse is created with mode 0666.
662 Help from Jens M. Noedler.
664 2005-09-14 Miklos Szeredi <miklos@szeredi.hu>
666 * Add memory cleanup on thread exit
668 2005-09-13 Miklos Szeredi <miklos@szeredi.hu>
670 * Set umask to zero in fusexmp and fusexmp_fh, so that
671 files/directories are created with the requested mode.
673 2005-09-12 Miklos Szeredi <miklos@szeredi.hu>
675 * Don't ignore read error in multithreaded loop
677 2005-09-08 Miklos Szeredi <miklos@szeredi.hu>
679 * Released 2.4.0-pre2
681 2005-09-08 Miklos Szeredi <miklos@szeredi.hu>
683 * Revert lock and access operations. Postpone these until 2.5.
685 2005-09-02 Miklos Szeredi <miklos@szeredi.hu>
687 * Fix compile warning on 2.6.13 and later
689 * Fix compilation on old kernels
691 2005-08-19 Miklos Szeredi <miklos@szeredi.hu>
693 * lib: always refresh directory contents after rewinddir() to
694 conform to SUS. Bug found by John Muir.
696 2005-08-15 Miklos Szeredi <miklos@szeredi.hu>
698 * Released 2.4.0-pre1
700 2005-08-14 Miklos Szeredi <miklos@szeredi.hu>
702 * lib: cleaned up (or messed up, depending on your POV) the low
703 level library API. Hopefully this is close to the final form.
705 2005-08-05 Miklos Szeredi <miklos@szeredi.hu>
707 * fusermount: don't allow empty mountpoint argument, which defeats
708 automatic umounting in fuse_main(). Bugreport by Václav Jůza
710 2005-08-03 Miklos Szeredi <miklos@szeredi.hu>
712 * fix warnings in fuse.h and fuse_lowlevel.h if -Wshadow compiler
713 option is used (Paul Alfille).
715 2005-08-02 Miklos Szeredi <miklos@szeredi.hu>
717 * highlevel-lib: added mount options "attr_timeout" and
718 "entry_timeout". These options control the length of time file
719 attributes and entries (names) are cached. Both default to 1.0
722 * kernel: correctly handle zero timeout for attributes and entries
724 2005-08-01 Miklos Szeredi <miklos@szeredi.hu>
726 * Added missing symbols to versionscript (Joshua J. Berry)
728 * kernel: implement two flags, open can set: 'direct_io' and
729 'keep_cache'. These correspond exactly to mount options
730 'direct_io' and 'kernel_cache', but allow a per-open setting.
732 * Move 'direct_io' and 'kernel_cache' mount option handling to
733 userspace. For both mount options, if the option is given, then
734 the respective open flag is set, otherwise the open flag is left
735 unmodified (so the filesystem can set it).
737 * lib (highlevel): make open method optional
739 2005-07-28 Miklos Szeredi <miklos@szeredi.hu>
741 * kernel: invalidate attributes for read/readdir/readlink
744 * kernel: detect newer UML kernels
746 2005-07-26 Miklos Szeredi <miklos@szeredi.hu>
748 * Make the installation path of fuse.ko and mount.fuse
749 configurable through INSTALL_MOD_PATH and MOUNT_FUSE_PATH
750 environment variables. Requirement and help from Csaba Henk.
752 2005-07-22 Miklos Szeredi <miklos@szeredi.hu>
754 * Fix bug, that causes filesystem requests to hang when unique
755 request counter becomes negative. This happens after
756 2,147,483,648 operations, so most people won't care. Thanks to
757 Franco Broi for the report and testing.
759 2005-07-21 Miklos Szeredi <miklos@szeredi.hu>
761 * Don't change mtime/ctime/atime to local time on read/write.
762 Bug reported by Ben Grimm
764 * Install fuse_common.h and fuse_lowlevel.h. Report by Christian
767 * fusermount: use getopt_long() for option parsing. It allows the
768 use of '--' to stop argument scanning, so fusermount can now
769 operate on directories whose names begin with a '-'. Patch by
772 2005-07-15 Miklos Szeredi <miklos@szeredi.hu>
774 * fusermount: add '-v', '--version' and '--help' options
776 * add inode based API
778 2005-07-12 Miklos Szeredi <miklos@szeredi.hu>
780 * lib: don't block signals in worker threads. Problem noticed by
783 2005-07-07 Miklos Szeredi <miklos@szeredi.hu>
785 * lib: don't allow both 'allow_other' and 'allow_root' options to
788 2005-07-06 Miklos Szeredi <miklos@szeredi.hu>
790 * fusermount: check if mountpoint is empty (only '.' and '..' for
791 directories, and size = 0 for regular files). If "nonempty"
792 option is given, omit this check. This is useful, so users don't
793 accidentally hide data (e.g. from backup programs). Thanks to
794 Frank van Maarseveen for pointing this out.
796 * kernel: check if mandatory mount options ('fd', 'rootmode',
797 'user_id', 'group_id') are all given
799 * lib: simplify 'readdir_ino' handling
801 * lib: add mount options 'umask=M', 'uid=N', 'gid=N'
803 2005-07-03 Miklos Szeredi <miklos@szeredi.hu>
805 * kernel: clean up 'direct_io' code
807 2005-06-28 Miklos Szeredi <miklos@szeredi.hu>
809 * Add 'mount.fuse' written by Petr Klima
811 * '/dev/fuse' is created by 'make install' if does not yet exist
813 2005-06-20 Miklos Szeredi <miklos@szeredi.hu>
815 * Fix UCLIBC compile error. Patch by Christian Magnusson
817 2005-06-08 Miklos Szeredi <miklos@szeredi.hu>
819 * Enable the auto-loading of the module via access to the
820 corresponding device file. Patch by Takashi Iwai.
822 * Allow mounting a regular file (over a regular file) for
825 * Do not create temporary device file. Require "/dev/fuse" to
826 exist, and be readable/writable by the mounting user.
828 2005-06-02 Miklos Szeredi <miklos@szeredi.hu>
832 2005-06-02 Miklos Szeredi <miklos@szeredi.hu>
834 * Fix serious information leak: if the filesystem returns a short
835 byte count to a read request, and there are non-zero number of
836 pages which are not filled at all, these pages will not be zeroed.
837 Hence the user can read out previous memory contents. Found by
840 2005-05-27 Miklos Szeredi <miklos@szeredi.hu>
842 * Add "readdir_ino" mount option, which tries to fill in the d_ino
843 field in struct dirent. This mount option is ignored if "use_ino"
844 is used. It helps some programs (e.g. 'pwd' used over NFS from a
845 non-Linux OS). Patch by David Shaw.
847 2005-05-12 Miklos Szeredi <miklos@szeredi.hu>
851 2005-05-12 Miklos Szeredi <miklos@szeredi.hu>
853 * File save in krusader and other editors doesn't work with sshfs,
854 because open() is interrupted by a periodic signal, and open()
855 restarts forever, without any progress. This could just be fixed
856 in open(), but the problem is more generic: if signals are
857 received more often than the filesystem can get the request to
858 userspace, it will never finish. This is probably only a
859 theoretical problem, nevertheless I'm removing the possibility to
860 interrupt requests with anything other than SIGKILL, even before
861 being sent to userspace. Bugreport by Eduard Czimbalmos.
863 2005-05-09 Miklos Szeredi <miklos@szeredi.hu>
865 * libfuse: add "tree_lock" rwlock, that is locked for write in
866 rename, unlink and rmdir, and locked for read in all other
867 operations. This should fix the rename/release race reported by
868 Valient Gough and others. The solution is very coarse, a finer
869 grained locking scheme could be implemented, but it would be much
870 more complex. Let's see whether this is good enough.
872 2005-05-09 Miklos Szeredi <miklos@szeredi.hu>
876 2005-05-08 Miklos Szeredi <miklos@szeredi.hu>
878 * Better fix for out of order FORGET messages. Now the
879 LOOKUP/FORGET messages are balanced exactly (one FORGET can
880 balance many lookups), so the order no longer matters. This
881 changes the kernel ABI slightly, but the library remains backward
884 2005-05-06 Miklos Szeredi <miklos@szeredi.hu>
886 * Fix abort for out of order FORGET messages. Again. Spotted by
887 Franco Broi again. Sorry :)
889 2005-04-29 Miklos Szeredi <miklos@szeredi.hu>
893 2005-04-29 Miklos Szeredi <miklos@szeredi.hu>
895 * Make fusermount work with fuse kernel modules not yet supporting
896 the "group_id" option (added for the purpose of stricter
897 permission checking).
899 2005-04-28 Miklos Szeredi <miklos@szeredi.hu>
901 * Check for hard-linked directories in lookup. This could cause
902 problems in the VFS, which assumes that such objects never exist.
904 * Make checking of permission for other users more strict. Now
905 the same privilege is required for the mount owner as for ptrace
906 on the process performing the filesystem operation.
908 2005-04-23 Miklos Szeredi <miklos@szeredi.hu>
912 2005-04-22 Miklos Szeredi <miklos@szeredi.hu>
914 * Add -msoft-float to kernel module compile flags for 2.4.X. This
915 is needed on certain architectures. Report from Chris Kirby
917 * Fix buggy behavior of open(..., O_CREAT|O_EXCL) if interrupted.
918 Reported by David Shaw
920 * Remove "allow_root" option from kernel module, and implement
921 it's functionality in the library
923 * Fix Oops caused by premature release of fuse_conn. Clean up
924 related code, to be more readable
926 * Sendfile should not use page cache if "direct_io" mount option
929 2005-04-08 Miklos Szeredi <miklos@szeredi.hu>
931 * Fix Oops in case of nfs export. Spotted by David Shaw
933 * Fix another Oops in case of write over nfs with direct_io turned
934 on. Again spotted by David Shaw
936 2005-04-07 Miklos Szeredi <miklos@szeredi.hu>
940 2005-04-07 Miklos Szeredi <miklos@szeredi.hu>
942 * lib: finalized new readdir() interface, which now supersedes the
945 2005-04-03 Miklos Szeredi <miklos@szeredi.hu>
949 2005-04-03 Miklos Szeredi <miklos@szeredi.hu>
951 * Implement backward compatibility with version 5 kernel ABI
953 2005-04-01 Miklos Szeredi <miklos@szeredi.hu>
957 2005-04-01 Miklos Szeredi <miklos@szeredi.hu>
959 * kernel: fix dirent offset handling
961 * lib: add readdir and releasedir methods
963 * lib: use fh field of fuse_file_info in opendir, readdir,
964 releasedir and fsyncdir methods
966 * lib: check kernel API version and bail out of it's old. This
967 will be properly fixed in the next release
969 2005-03-31 Miklos Szeredi <miklos@szeredi.hu>
973 2005-03-31 Miklos Szeredi <miklos@szeredi.hu>
975 * kernel API: add padding to structures, so 64bit and 32bit
976 compiler will return the same size
978 * kernel API: add offset field to fuse_dirent. This will allow
979 more sophisticated readdir interface for userspace
981 * kernel API: change major number to 6
983 * kernel: fix warnings on 64bit archs
985 * kernel: in case of API version mismatch, return ECONNREFUSED
987 2005-03-24 Miklos Szeredi <miklos@szeredi.hu>
989 * kernel: trivial cleanups
991 2005-03-21 Miklos Szeredi <miklos@szeredi.hu>
993 * Add fsyncdir() operation
995 2005-03-19 Miklos Szeredi <miklos@szeredi.hu>
997 * kernel: add locking to background list (fixes previous fix)
999 2005-03-18 Miklos Szeredi <miklos@szeredi.hu>
1001 * kernel: fix bug which could cause leave busy inodes after
1004 2005-03-08 Miklos Szeredi <miklos@szeredi.hu>
1006 * examples: add -lpthread to link flags to work around valgrind
1009 * lib: don't exit threads, so cancelation doesn't cause segfault
1011 2005-03-04 Miklos Szeredi <miklos@szeredi.hu>
1013 * kernel: fix nasty bug which could cause an Oops under certain
1014 situations. Found by Magnus Johansson
1016 2005-02-28 Miklos Szeredi <miklos@szeredi.hu>
1018 * libfuse: added opendir() method. This can be used in case
1019 permission checking in getdir() is too late. Thanks to Usarin
1020 Heininga for pointing out this deficiency
1022 * libfuse: added init() and destroy() methods to fuse_operations
1024 * kernel: llseek() method for files and directories made explicit
1026 * kernel: fixed inode leak in NFS export in case of nodeid
1029 2005-02-15 Miklos Szeredi <miklos@szeredi.hu>
1031 * libfuse: clean up some unitialized memory found with valgrind
1033 * Add -lpthread to Libs in fuse.pc. Valgrind seems to need an
1034 explicitly linked libpthread for applications
1036 2005-02-10 Miklos Szeredi <miklos@szeredi.hu>
1038 * fusermount: set umask, otherwise /etc/mtab will have
1039 unpredictable permission. Spotted by Jindrich Kolorenc
1041 * fusermount: set owner and group of /etc/mtab to original values
1044 * libfuse: add 'use_ino' option to help. Patch by Valient Gough
1046 2005-02-07 Miklos Szeredi <miklos@szeredi.hu>
1048 * Cleaned up directory reading (temporary file is not used)
1050 2005-02-02 Miklos Szeredi <miklos@szeredi.hu>
1054 2005-02-02 Miklos Szeredi <miklos@szeredi.hu>
1056 * Fix possible race when operation is interrupted
1058 2005-01-28 Miklos Szeredi <miklos@szeredi.hu>
1060 * Fix compilation on 2.6.7
1062 2005-01-26 Miklos Szeredi <miklos@szeredi.hu>
1066 2005-01-26 Miklos Szeredi <miklos@szeredi.hu>
1068 * Fix bug in link() operation which caused the wrong path to be
1069 passed as the first argument. Found by Anton Altaparmakov
1071 2005-01-21 Miklos Szeredi <miklos@szeredi.hu>
1073 * LIB: fix double reply in readdir operation
1075 * fusermount: fix uid checking bug. Patch by Adam Connell
1077 * KERNEL: fix compile on various RedHat patched 2.4 kernels.
1078 Patch by Keshava Gowda
1080 2005-01-20 Miklos Szeredi <miklos@szeredi.hu>
1082 * KERNEL: provide correct llseek semantics for fuse device (fixes
1083 a bug on Progeny 2.4.20 kernel). Reported by Valient Gough
1085 2005-01-20 Miklos Szeredi <miklos@szeredi.hu>
1087 * Released 2.2-pre5 (matches kernel 2.6.11-rc1-mm2)
1089 2005-01-18 Miklos Szeredi <miklos@szeredi.hu>
1091 * KERNEL ABI: remove GETDIR operation, and add OPENDIR, READDIR
1092 and RELEASEDIR. This ends the ugly hack of passing a file
1093 descriptor to the kernel, and actually makes the code simpler.
1095 2005-01-17 Miklos Szeredi <miklos@szeredi.hu>
1099 2005-01-17 Miklos Szeredi <miklos@szeredi.hu>
1101 * fusermount: remove capability setting, which was the cause of
1102 problems for some users. It seems that FS related capabilities
1103 are removed by setfsuid(), so this isn't even needed.
1105 2005-01-15 Miklos Szeredi <miklos@szeredi.hu>
1107 * fix compilation on 2.4 kernels (reported by Valient Gough)
1109 * fix failure to unmount bug (found by David Shaw)
1111 * fusermount: improve parsing of /etc/fuse.conf
1113 2005-01-13 Miklos Szeredi <miklos@szeredi.hu>
1115 * Remove 'mount_max' and 'user_allow_other' module options. These
1116 are now checked by fusermount, and can be set in /etc/fuse.conf
1118 * KERNEL: change check for fsid == 0 to capable(CAP_DAC_OVERRIDE)
1120 2005-01-11 Miklos Szeredi <miklos@szeredi.hu>
1122 * KERNEL: fix possible inode allocation problem, where
1123 sizeof(struct inode) is not aligned (found by Mike Waychison)
1125 * KERNEL: use new follow_link/put_link methods
1127 * KERNEL: cosmetic fixes
1129 2005-01-10 Miklos Szeredi <miklos@szeredi.hu>
1133 2005-01-10 Miklos Szeredi <miklos@szeredi.hu>
1135 * Add missing code that was accidently left out
1137 2005-01-09 Miklos Szeredi <miklos@szeredi.hu>
1141 2005-01-09 Miklos Szeredi <miklos@szeredi.hu>
1143 * Change "uid" mount option to "user_id" to avoid confusion with a
1144 mount option "uid" commonly used by many filesystems
1146 2005-01-09 Miklos Szeredi <miklos@szeredi.hu>
1150 2005-01-09 Miklos Szeredi <miklos@szeredi.hu>
1152 * If FUSE is configured in the kernel, don't build it by default
1154 2005-01-07 Miklos Szeredi <miklos@szeredi.hu>
1156 * Compile fix by Christian Magnusson
1158 2005-01-05 Miklos Szeredi <miklos@szeredi.hu>
1160 * Fix compilation for 2.6.{0-5} kernels
1162 2005-01-04 Miklos Szeredi <miklos@szeredi.hu>
1164 * KERNEL: if request is interrupted, still keep reference to used
1165 inode(s) and file, so that FORGET and RELEASE are not sent until
1166 userspace finishes the request.
1168 * remove /{sys,proc}/fs/fuse/version, and instead add an INIT
1169 request with the same information, which is more flexible,
1170 simpler, works on embedded systems.
1172 2004-12-16 Miklos Szeredi <miklos@szeredi.hu>
1174 * KERNEL ABI: update interface to make it independent of type
1175 sizes. This will help on 64 bit architectures which can run
1176 legacy 32 bit applications.
1178 * KERNEL ABI: add "len" field to request headers. This will allow
1179 sending/receiving requests in multiple chunks.
1181 * KERNEL: handle file type change more intelligently
1183 * LIB: "-o debug" option should disable backgrounding (fix by
1184 Fabien Reygrobellet)
1186 2004-12-13 Miklos Szeredi <miklos@szeredi.hu>
1188 * KERNEL: invalidate dentry/attributes if interrupted request
1189 could leave filesystem in an unknown state.
1191 2004-12-12 Miklos Szeredi <miklos@szeredi.hu>
1193 * KERNEL: lots of cleanups related to avoiding possible deadlocks.
1194 These will cause some regressions, but stability is considered
1195 more important. If any of these features turns out to be
1196 important, it can be readded with the deadlock problems addressed.
1198 * Make all requests interruptible (only with SIGKILL currently).
1199 This can be used to break any deadlock produced by the userspace
1200 filesystem accessing it's own exported files. The RELEASE request
1201 is special, because if it's interrupted before sending it to
1202 userspace it is still sent, but the reply is not awaited.
1204 * If request is interrupted before being sent to userspace, and if
1205 it hasn't yet got any side effects, it is always restarted,
1206 regardless of the SA_RESTART flag. This makes these interruptions
1207 transparent to the process.
1209 * Remove shared-writable mmap support, which was prone to an
1210 out-of-memory deadlock situation
1212 * Remove INVALIDATE userspace initiated request
1214 * Make readpages() synchronous. Asynchronous requests are
1215 deadlock prone, since they cannot be interrupted.
1217 * Add readv/writev support to fuse device operations
1219 * Remove some printks, which userspace FS can use for a DoS
1222 * Remove 'large_read' mount option from 2.6 in kernel, check it in
1225 * LIB: improve compatibility with a fuse.h header installed in
1226 ${prefix}/include which in turn includes the real header.
1228 * LIB: improve compatibility by defining fuse_main() (which is now
1229 not used), so old configure scripts find it.
1231 2004-12-10 Miklos Szeredi <miklos@szeredi.hu>
1233 * When mounting on a subdirectory of / don't duplicate slashes at
1234 the beggining of path (spotted by David Shaw)
1236 2004-12-09 Miklos Szeredi <miklos@szeredi.hu>
1238 * Fix bug causing garbage in mount options (spotted by David Shaw)
1240 2004-12-07 Miklos Szeredi <miklos@szeredi.hu>
1242 * Add 'writepage' flag to 'fuse_file_info'.
1244 * More comments in fuse.h
1246 * Get rid of double underscores
1248 2004-12-04 Miklos Szeredi <miklos@szeredi.hu>
1250 * Add -D_FILE_OFFSET_BITS=64 to cflags provided by pkg-config
1252 * helper.c: add -ho option, which only displays the options not
1253 the usage header. This can be used by filesystems which have
1256 2004-12-03 Miklos Szeredi <miklos@szeredi.hu>
1258 * Add source compatibility to 2.1 and 1.1 APIs. To select betwen
1259 versions simply define FUSE_USE_VERSION to 22, 21 or 11 before
1260 including the fuse header
1262 * Add binary compatibility to 2.1 version of library with symbol
1265 2004-12-03 Miklos Szeredi <miklos@szeredi.hu>
1269 2004-12-01 Miklos Szeredi <miklos@szeredi.hu>
1271 * kernel: clean up writing functions
1273 * kernel: no allocation on write in direct_io mode
1275 * move linux/fuse.h to fuse_kernel.h
1277 2004-11-30 Miklos Szeredi <miklos@szeredi.hu>
1279 * kernel: clean up reading functions
1281 2004-11-29 Miklos Szeredi <miklos@szeredi.hu>
1283 * kernel: make readpage() uninterruptible
1285 * kernel: check readonly filesystem flag in fuse_permission
1287 * lib: don't die if version file not found and new style device
1290 * lib: add '-r' option, which is short for '-o ro'
1292 * fusermount: simplify device opening
1294 * kernel: when direct_io is turend on, copy data directly to
1295 destination without itermediate buffer. More efficient and safer,
1296 since no allocation is done.
1298 * fusermount: fix warning if fuse module is not loaded
1300 * kernel: use /dev/fuse on 2.4 too
1302 2004-11-26 Miklos Szeredi <miklos@szeredi.hu>
1304 * libfuse API change: open, read, write, flush, fsync and release
1305 are passed a 'struct fuse_file_info' pointer containing the open
1306 flags (open and release), and the file handle. Verion changed to
1309 2004-11-23 Miklos Szeredi <miklos@szeredi.hu>
1311 * More cleanups in the kernel
1313 * The 10,229 charater device number has been assigned for FUSE
1315 * Version file checking fix (reported by Christian Magnusson)
1317 * fusermount: opening the fuse device now doesn't need /sys.
1319 * Optimize reading by controlling the maximum readahead based on
1320 the 'max_read' mount option
1322 * fixes for UCLIBC (Christian Magnusson)
1324 2004-11-19 Miklos Szeredi <miklos@szeredi.hu>
1326 * Cleaned up kernel in preparation for merge into mainline:
1328 * Use /sys/fs/fuse/version instead of /proc/fs/fuse/version
1330 * Use real device (/dev/fuse) instead of /proc/fs/fuse/dev
1332 * __user annotations for sparse
1334 * allocate individual pages instead of kmalloc in fuse_readdir,
1335 fuse_read and fuse_write.
1337 * Fix NFS export in case "use_ino" mount option is given
1339 * Make libfuse and fusermount compatible with future versions
1341 * fusermount: properly add mount options to /etc/mtab
1343 2004-11-15 Miklos Szeredi <miklos@szeredi.hu>
1345 * fusermount: do not resolve last component of mountpoint on if it
1346 is '.' or '..'. This new path resolvation is now done on mount as
1347 well as unmount. This enables relative paths to work on unmount.
1349 * fusermount: parse common mount options like "ro", "rw", etc...
1351 * Allow module params to be changed through sysfs
1353 2004-11-14 Miklos Szeredi <miklos@szeredi.hu>
1357 2004-11-14 Miklos Szeredi <miklos@szeredi.hu>
1359 * Fix bug in fuse_readpages() causing Oops in certain situations.
1360 Bug found by Vincenzo Ciancia.
1362 * Fix compilation with kernels versions > 2.6.9.
1364 2004-11-11 Miklos Szeredi <miklos@szeredi.hu>
1366 * Check kernel interface version in fusermount to prevent
1367 strangeness in case of mismatch.
1369 * No need to allocate fuse_conn until actual mount happens
1371 * Fix potential race between umount and fuse_invalidate
1373 * Check superblock of proc file in addition to inode number
1375 * Fix race between request_send_noreply() and fuse_dev_release()
1377 2004-11-10 Miklos Szeredi <miklos@szeredi.hu>
1379 * Separate configure for the kernel directory
1381 * Don't allow write to return more than 'count'
1383 * Extend kernel interface for future use
1385 2004-11-09 Miklos Szeredi <miklos@szeredi.hu>
1387 * Fix 'makeconf.sh' to use autoreconf if available
1389 2004-11-08 Miklos Szeredi <miklos@szeredi.hu>
1391 * Add ino argument to 'fuse_dirfil_t'. NOTE: This breaks source
1392 compatibility with earlier versions. To compile earier versions
1393 just add '-DFUSE_DIRFIL_COMPAT' compile flag or fix the source.
1394 Do not use the "use_ino" mount flag with filesystems compiled with
1397 * Add pkg-config support. To compile a FUSE based filesystem you
1398 can do "gcc -Wall `pkg-config --cflags --libs fuse` myfs.c -o myfs"
1399 or similar. Note, that the PKG_CONFIG_PATH environment variable
1400 usually needs to be set to "/usr/local/lib/pkgconfig".
1402 * fuse.h is now installed in ${prefix}/include/fuse/
1404 2004-11-02 Miklos Szeredi <miklos@szeredi.hu>
1406 * Added "use_ino" mount option. This enables the filesystems to
1407 set the st_ino field on files
1409 2004-11-01 Miklos Szeredi <miklos@szeredi.hu>
1411 * Fix compile problems with ancient (<=2.4.18) kernels (reported
1414 * Add "allow_root" mount option. Patch by Yaroslav Rastrigin
1416 * Clear the 'exited' flag when mail loop is finished
1418 2004-10-28 Miklos Szeredi <miklos@szeredi.hu>
1420 * Make xattr functions work under 2.6 (bug found by Vincenzo
1423 2004-10-26 Miklos Szeredi <miklos@szeredi.hu>
1425 * Reset request in fuse_flush() (bugreport by David Shaw)
1427 2004-10-21 Miklos Szeredi <miklos@szeredi.hu>
1429 * fuse_main() now does not exit on error, rather it returns an
1432 * Exported __fuse_setup() and __fuse_teardown() functions, which
1433 make it easier to implement a custom event loop.
1435 * Use daemon() call to background the filesystem after mounting.
1436 This function closes the standard input, output and error and
1437 changes the current working directory to "/".
1439 2004-10-14 Miklos Szeredi <miklos@szeredi.hu>
1443 2004-10-09 Miklos Szeredi <miklos@szeredi.hu>
1445 * Don't allow fuse_flush() to be interrupted (bug found by David
1448 2004-09-27 Miklos Szeredi <miklos@szeredi.hu>
1450 * Add PID to fuse_context. Patch by Steven James
1452 * Change file handle type to 'unsigned long' in kernel interface
1454 2004-09-22 Miklos Szeredi <miklos@szeredi.hu>
1456 * A slight API change: fuse_get_context() doesn't need the "fuse"
1457 pointer, but the returned context contains it instead. The
1458 fuse_get() function is not needed anymore, so it's removed.
1460 * Fix mounting and umounting FUSE filesystem under another FUSE
1461 filesystem by non-root (bug spotted by Valient Gough)
1463 2004-09-21 Miklos Szeredi <miklos@szeredi.hu>
1465 * Fix deadlock in case of memory allocation failure. Patch by
1468 2004-09-16 Miklos Szeredi <miklos@szeredi.hu>
1470 * Check memory allocation failures in libfuse
1472 2004-09-14 Miklos Szeredi <miklos@szeredi.hu>
1474 * Check temporary file creation failure in do_getdir(). Bug
1475 spotted by Terje Oseberg
1477 2004-09-13 Miklos Szeredi <miklos@szeredi.hu>
1479 * Allow "large_read" option for 2.6 kernels but warn of deprecation
1481 * Make requests non-interruptible so race with FORGET is avoided.
1482 This is only a temporary solution
1484 * Support compiling FUSE kernel module on 2.4.x UML kernels
1486 2004-09-09 Miklos Szeredi <miklos@szeredi.hu>
1488 * Fix bug in case two FORGETs for the same node are executed in
1489 the wrong order. Bug spotted and endured for months by Franco
1490 Broi, and logfile for solution provided by Terje Oseberg
1492 2004-09-01 Miklos Szeredi <miklos@szeredi.hu>
1494 * Add -D_REENTRANT to the compile flags
1496 * Add documentation of fuse internals by Terje Oseberg
1498 2004-08-16 Miklos Szeredi <miklos@szeredi.hu>
1500 * Change release method to be non-interruptible. Fixes bug
1501 causing missing release() call when program which has opened files
1502 is killed (reported by Franco Broi and David Shaw)
1504 2004-07-29 Miklos Szeredi <miklos@szeredi.hu>
1506 * Add fuse_invalidate() to library API
1508 2004-07-26 Miklos Szeredi <miklos@szeredi.hu>
1510 * Check permissions in setattr if 'default_permissions' flag is
1511 set. Bug spotted by Damjan Lango
1513 2004-07-24 Miklos Szeredi <miklos@szeredi.hu>
1515 * 'large_read' mount option removed for 2.6 kernels, since the
1516 default (dynamic read size) is better
1518 * Extend kernel API with file handles. A file handle is returned
1519 by open, and passed to read, write, flush, fsync and release.
1520 This is currently only used for debug output in the library.
1524 * Change the current directory to the mountpoint before checking
1525 the permissions and mount filesystem on "."
1527 * By default don't modprobe the fuse module for non-root. The old
1528 behavior can be restored with the '--enable-auto-modprobe' flag of
1531 * By default don't allow shared writable mappings for non-root.
1532 The old behavior can be restored with the 'user_mmap=1' module
1535 2004-07-23 Miklos Szeredi <miklos@szeredi.hu>
1537 * Clean up mount option passing to fusermount and to fuse_new()
1538 BEWARE: this changes the userspace API slightly, and the command
1539 line usage of programs using fuse_main()
1541 2004-07-20 Miklos Szeredi <miklos@szeredi.hu>
1543 * Optimize reading under 2.6 kernels by issuing multiple page
1544 asynchronous read requests
1546 2004-07-18 Miklos Szeredi <miklos@szeredi.hu>
1548 * Only use redirty_page_for_writepage() for kernels >= 2.6.6
1550 2004-07-16 Miklos Szeredi <miklos@szeredi.hu>
1552 * Separate directory entry and inode attribute validity timer
1554 * New write semaphore to stop page writeback during truncate
1556 * Fsync now waits for all writes to complete before sending the
1559 * Optimization: if a page is completely written by
1560 fuse_commit_write(), clear the dirty flag and set the uptodate
1563 * Some memory cleanup at exit
1565 2004-07-13 Miklos Szeredi <miklos@szeredi.hu>
1567 * Add FUSE_HARD_REMOVE flag, and '-i' option to fuse main, which
1568 disable the "hide if open" behavior of unlink/rename.
1570 * If temporary buffer allocation fails in raw read, fall back to a
1573 2004-07-12 Miklos Szeredi <miklos@szeredi.hu>
1575 * Fix bug in do_open() in libfuse: open count was incremented
1576 after the reply is sent so it could race with unlink/forget and
1579 2004-07-08 Miklos Szeredi <miklos@szeredi.hu>
1581 * When performing create or remove operation, refresh the parent's
1582 attributes on next revalidate, as i_nlink (and maybe size/time)
1585 * Use redirty_page_for_writepage() in fuse_writepage() for skipped
1588 * Set set_page_dirty address space operation (2.6 only)
1590 2004-07-06 Miklos Szeredi <miklos@szeredi.hu>
1592 * Minor fix in read: print debug info even if read size is zero
1594 2004-07-04 Miklos Szeredi <miklos@szeredi.hu>
1596 * Fix race between truncate and writepage (fsx-linux now runs
1599 2004-07-02 Miklos Szeredi <miklos@szeredi.hu>
1601 * Fix kernel hang on mkfifo under 2.4 kernels (spotted and patch
1604 * Added option for direct read/write (-r)
1606 * Fix revalidate time setting for newly created inodes
1608 * Remove uid==0 check for '-x' option in fusermount (kernel checks
1611 * fuse_main() only installs handlers for signals (out of INT, HUP,
1612 TERM, PIPE), for which no handler has yet been installed
1614 * Add module option 'user_allow_other' which if set to non-zero
1615 will allow non root user to specify the 'allow_other' mount option
1616 ('-x' option of fusermount)
1618 * Fix deadlock between page writeback completion and truncate
1619 (bug found by Valient Gough with the fsx-linux utility)
1621 2004-07-01 Miklos Szeredi <miklos@szeredi.hu>
1623 * Change passing fuse include dir to 2.6 kernel make system more
1624 robust (fixes compile problems seen on SuSE 9.1 with updated 2.6
1627 2004-06-30 Miklos Szeredi <miklos@szeredi.hu>
1629 * Acquire inode->i_sem before open and release methods to prevent
1630 concurrent rename or unlink operations.
1632 * Make __fuse_read_cmd() read only one command. This allows
1633 multiplexing the fuse file descriptor with other event sources
1634 using select() or poll() (patch by Jeff Harris)
1636 * Export 'exited' flag with __fuse_exited() (patch by Jeff Harris)
1638 2004-06-27 Miklos Szeredi <miklos@szeredi.hu>
1640 * Fix file offset wrap around at 4G when doing large reads
1642 2004-06-24 Miklos Szeredi <miklos@szeredi.hu>
1644 * Fix memory leak in open (Valient Gough)
1646 2004-06-24 Miklos Szeredi <miklos@szeredi.hu>
1648 * Add "close after delete" support to libfuse (patch by Valient
1651 * Cancel all worker threads before exit in multithreaded mode
1653 2004-06-23 Miklos Szeredi <miklos@szeredi.hu>
1657 * Don't send reply to RELEASE
1659 * Work with newer libtool (1.5a)
1661 * Check for st_atim member of struct stat
1663 2004-06-22 Miklos Szeredi <miklos@szeredi.hu>
1665 * No request allocation needed on inode and file release
1667 2004-06-21 Miklos Szeredi <miklos@szeredi.hu>
1669 * Fix possible inode leak in userspace in case of unfinished
1670 lookup/mknod/mkdir/symlink/link operation.
1672 2004-06-20 Miklos Szeredi <miklos@szeredi.hu>
1674 * Fix some races and cleanups in fuse_read_super()
1676 2004-06-19 Miklos Szeredi <miklos@szeredi.hu>
1678 * Requests are allocated at open time
1680 2004-06-03 Miklos Szeredi <miklos@szeredi.hu>
1682 * Build shared library as well as static (using libtool)
1684 * Change FUSE_MINOR_VERSION from 1 to 0. I know it's illegal but
1685 there has not been a release with the previous minor number, and I
1686 hope nobody is using it for anything.
1688 * Change fuse_main(), so that default behavior is to go into
1689 background if mount is successful. '-f' and '-d' options disable
1690 backgrounding. This fixes the "Why does my FUSE daemon hang?"
1693 * Cache ENOSYS (function not implemented) errors on *xattr, flush
1696 * Don't call getdir method from open() only from first readdir().
1697 Open is sometimes just used to store the current directory
1700 2004-05-18 Miklos Szeredi <miklos@szeredi.hu>
1702 * Added flush() call
1704 2004-05-04 Miklos Szeredi <miklos@szeredi.hu>
1706 * Extended attributes support for 2.4 (patch by Cody Pisto)
1708 2004-04-20 Miklos Szeredi <miklos@szeredi.hu>
1710 * Fixed parser with modversions (Mattias Wadman)
1712 2004-04-19 Miklos Szeredi <miklos@szeredi.hu>
1714 * Added mount option parser to 2.4 build
1716 2004-04-13 Miklos Szeredi <miklos@szeredi.hu>
1718 * Replaced binary mount data with text options
1720 * Show FUSE specific mount options in /proc/mounts
1722 * Check in fuse.h whether _FILE_OFFSET_BITS is set to 64
1724 2004-04-09 Miklos Szeredi <miklos@szeredi.hu>
1726 * Check some limits so userspace won't get too big requests
1728 2004-04-05 Miklos Szeredi <miklos@szeredi.hu>
1730 * Kill compile warning
1732 * Upgraded user-mount patch for 2.6.5
1734 2004-04-02 Miklos Szeredi <miklos@szeredi.hu>
1736 * Add detection of user-mode-linux to configure
1738 2004-03-31 Miklos Szeredi <miklos@szeredi.hu>
1740 * fixed zero size case for getxattr and listxattr
1742 2004-03-30 Miklos Szeredi <miklos@szeredi.hu>
1744 * new fusermount flag '-z': lazy unmount, default is not lazy
1746 * Extended attributes operations added (getxattr, setxattr,
1747 listxattr, removexattr)
1749 2004-03-25 Miklos Szeredi <miklos@szeredi.hu>
1751 * If filesystem doesn't define a statfs operation, then an
1752 all-zero default statfs is returned instead of ENOSYS
1754 2004-03-24 Miklos Szeredi <miklos@szeredi.hu>
1756 * Add FS_BINARY_MOUNTDATA filesystem flag for kernels > 2.6.4
1758 2004-03-09 Miklos Szeredi <miklos@szeredi.hu>
1760 * Fix for uClinux (Christian Magnusson)
1762 2004-03-02 Miklos Szeredi <miklos@szeredi.hu>
1764 * fuse_main() adds "-n progname" to the fusermount command line
1766 * More kernel interface changes:
1768 * Lookup/getattr return cache timeout values
1770 2004-02-25 Miklos Szeredi <miklos@szeredi.hu>
1772 * Clean up option parsing in fuse_main()
1774 * Added fuse_get() function which returns the fuse object created
1777 2004-02-20 Miklos Szeredi <miklos@szeredi.hu>
1779 * removed old way of mounting (fusermount mountpoint program)
1781 * more kernel interface changes:
1783 * added nanosecond precision to file times
1785 * removed interface version from mount data
1787 * added /proc/fs/fuse/version which contains MAJOR.MINOR
1789 2004-02-19 Miklos Szeredi <miklos@szeredi.hu>
1791 * statfs library API changed to match other methods. Since this
1792 is not backward compatible FUSE_MAJOR_VERSION is changed to 2
1794 * kernel interface changes follow:
1796 * statfs changed to 64 bits, added 'bavail' field
1798 * add generation number to lookup result
1800 * optimized mknod/mkdir/symlink/link (no separate lookup is
1803 * rdev size increased to 32 bits for mknod
1805 * kernel interface version changed to 3.1
1807 2004-02-18 Miklos Szeredi <miklos@szeredi.hu>
1809 * user-mount upgraded for 2.6.3 kernel
1811 2004-02-17 Miklos Szeredi <miklos@szeredi.hu>
1813 * Added user-mount.2.6.2-rc3.patch
1815 * Add FS_SAFE flag to fuse filesystem
1817 * fusermount should allow (un)mounting for non-root even if not
1820 2004-02-12 Miklos Szeredi <miklos@szeredi.hu>
1822 * Remove MS_PERMISSION mount flag (that means something else now)
1824 2004-02-10 Miklos Szeredi <miklos@szeredi.hu>
1826 * Added check for i_size_read/write functions to configure.in
1827 (patch by Valient Gough)
1829 2004-02-06 Miklos Szeredi <miklos@szeredi.hu>
1831 * Fixed writing >= 2G files
1833 * Check file size on open (with generic_file_open())
1835 * Readpage calls flush_dcache_page() after storing data
1837 * Use i_size_read/write for accessing inode->i_size
1839 * Make loopback mount of a fuse file work
1841 2004-02-04 Miklos Szeredi <miklos@szeredi.hu>
1845 2004-01-29 Miklos Szeredi <miklos@szeredi.hu>
1847 * Properly check if the inode exists in fuse_invalidate
1849 2004-01-27 Miklos Szeredi <miklos@szeredi.hu>
1851 * Added -q option for fusermount
1853 * fuse_unmount() now uses -q option of fusermount, so no error is
1854 printed if the cause of the program exit is that the filesystem
1855 has already been unmounted
1857 * Fix i_nlink correctness after rmdir/unlink
1859 2004-01-26 Miklos Szeredi <miklos@szeredi.hu>
1863 2004-01-26 Miklos Szeredi <miklos@szeredi.hu>
1865 * Fix typo (thanks Marcos Dione)
1867 * Compile fixes for 2.4 kernels
1869 2004-01-23 Miklos Szeredi <miklos@szeredi.hu>
1871 * Fix CONFIG_MODVERSIONS compile on 2.6
1873 2004-01-22 Miklos Szeredi <miklos@szeredi.hu>
1875 * Write all pending data before a RELEASE operation
1877 * Suppress 'Bad file descriptor' warning on exit
1879 * Replaced fusermount option '-d xxx' with '-n xxx' so it doesn't
1880 get confused with '-d' of fuse_main() (sorry about this change)
1882 * New fusermount option '-l' which enables big reads. Big reads
1883 are now disabled by default.
1885 * fuse_main() can accept fusermount arguments after a '--'
1887 2004-01-19 Miklos Szeredi <miklos@szeredi.hu>
1889 * Support for exporting filesystem over NFS (see README.NFS)
1891 2004-01-14 Miklos Szeredi <miklos@szeredi.hu>
1893 * Support non-blocking writepage on 2.6. This makes FUSE behave
1894 much more nicely in low-memory situations
1896 * Fix 32-bit dev handling in getattr and mknod for 2.6 kernels.
1897 (Note: the mknod method does not yet use 32bit device number)
1899 2004-01-13 Miklos Szeredi <miklos@szeredi.hu>
1903 2004-01-07 Miklos Szeredi <miklos@szeredi.hu>
1907 2004-01-06 Miklos Szeredi <miklos@szeredi.hu>
1909 * Integrated 2.6 kernel support patch by Michael Grigoriev
1911 * Improvements and cleanups for 2.6 kernels
1913 2004-01-05 Miklos Szeredi <miklos@szeredi.hu>
1915 * Added -d option to fusermount
1917 2003-12-15 Miklos Szeredi <miklos@szeredi.hu>
1919 * Added major+minor version to library API, and minor version to
1922 2003-12-13 David McNab <david@rebirthing.co.nz>
1924 * Implemented fsync support in examples/example.py
1926 * Implemented 'fsync' and 'statfs' methods in python
1929 2003-12-12 Miklos Szeredi <miklos@szeredi.hu>
1931 * Make it compile on 2.4.19.
1933 * Add fsync operation (write file failed on xemacs & vi)
1935 2003-12-12 David McNab <david@rebirthing.co.nz>
1937 * Added distutils support to the python module, as per standard
1938 python development practice
1940 2003-12-11 Miklos Szeredi <miklos@szeredi.hu>
1942 * Add file locking for mount/unmount (based on patch by Valient
1945 2003-12-11 David McNab <david@rebirthing.co.nz>
1947 * Python filesystem - was broken with python2.3, now fixed:
1948 - changed PyTuple_* calls to PySequence_*, because os.lstat
1949 is no longer returning a pure tuple
1950 - changed PyInt_Check() calls to also call PyLong_Check,
1951 to cover for cases (eg os.lstat) where longs are returned
1952 - Added support for file 'release' handling, which IMO is
1953 essential since this signals to a FS that writes to a file
1954 are complete (and therefore the file can now be disposed of
1955 meaningfully at the python filesystem's discretion)
1956 - Added '__init__' handler to base Fuse class, which allows
1957 your Python class to know the mountpoint and mount args,
1958 as attributes myfs.mountpoint, myfs.optlist, myfs.optdict
1961 - added 'mount.fuse' script (in util/ dir), which is meant to be
1962 symlinked from /sbin, and which allows FUSE filesystems to
1963 be mounted with the 'mount' command, and listed in fstab;
1964 also, mount arguments get passed to your filesystem
1967 2003-11-04 Miklos Szeredi <miklos@szeredi.hu>
1969 * Fix kernel version detection (again). Bugreport by Peter Levart
1971 2003-11-03 Miklos Szeredi <miklos@szeredi.hu>
1973 * Applied read combining patch by Michael Grigoriev (tested by
1974 Valient Gough and Vincent Wagelaar)
1976 2003-10-22 Miklos Szeredi <miklos@szeredi.hu>
1978 * Mtab handling fix in fusermount by "Valient Gough" (SF patch
1981 2003-10-13 Miklos Szeredi <miklos@szeredi.hu>
1983 * Error code fixes in kernel module
1985 2003-10-04 Miklos Szeredi <miklos@szeredi.hu>
1987 * kernel version detection fix
1989 * fusermount now uses "lazy" umount option
1991 * fusermount can use modprobe with module-init-tools
1993 2003-09-08 Miklos Szeredi <miklos@szeredi.hu>
1995 * Integrated caching patch by Michael Grigoriev
1997 * Added "Filesystems" file with descriptions of projects using
2000 * Added patch by Michael Grigoriev to allow compliation of FUSE
2001 kernel module for 2.6 kernels
2003 2003-06-02 Miklos Szeredi <miklos@szeredi.hu>
2005 * And another spec-file fix by Achim Settelmeier
2007 2003-05-26 Miklos Szeredi <miklos@szeredi.hu>
2009 * Spec-file fix by Achim Settelmeier
2011 2003-03-10 Miklos Szeredi <miklos@szeredi.hu>
2013 * Fix umount oops (found by Samuli Kärkkäinen)
2015 2003-03-05 Miklos Szeredi <miklos@szeredi.hu>
2017 * Merge of fuse_redhat.spec and fuse.spec by Achim Settelmeier
2019 2003-03-04 Miklos Szeredi <miklos@szeredi.hu>
2021 * Updated fuse.spec file (Achim Settelmeier)
2023 2003-02-19 Miklos Szeredi <miklos@szeredi.hu>
2025 * Version 1.0 released
2027 2003-02-12 Miklos Szeredi <miklos@szeredi.hu>
2029 * SuSE compilation fix by Juan-Mariano de Goyeneche
2031 2002-12-10 Miklos Szeredi <miklos@szeredi.hu>
2033 * The release() VFS call is now exported to the FUSE interface
2035 2002-12-05 Miklos Szeredi <miklos@szeredi.hu>
2037 * 64 bit file offset fixes in the fuse kernel module
2039 * Added function 'fuse_exit()' which can be used to exit the main
2042 2002-12-03 Miklos Szeredi <miklos@szeredi.hu>
2044 * Added _FILE_OFFSET_BITS=64 define to fuse.h. Note, that this is
2045 an incompatible interface change.
2047 2002-10-28 Miklos Szeredi <miklos@szeredi.hu>
2049 * Portablility fix (bug reported by C. Chris Erway)
2051 2002-10-25 Miklos Szeredi <miklos@szeredi.hu>
2053 * Use Mark Glines' fd passing method for default operation instead
2056 2002-10-22 Miklos Szeredi <miklos@szeredi.hu>
2058 * fix "Stale NFS file handle" bug caused by changes in 2.4.19
2060 2002-10-22 Miklos Szeredi <miklos@szeredi.hu>
2062 * fix incompatiblity with Red Hat kernels, with help from Nathan
2065 2002-04-18 Mark Glines <mark@glines.org>
2067 * added an alternative to fuse_mount(), called
2068 fuse_mount_ioslave(), which does not need to reexec the
2070 * added a small helper util needed by fuse_mount_ioslave().
2072 2002-03-16 Mark Glines <mark@glines.org>
2074 * use struct fuse_statfs everywhere possible to avoid problems
2075 with the headerfiles changing struct statfs member sizes
2077 2002-03-01 Miklos Szeredi <miklos@szeredi.hu>
2079 * Another RPM spec file for RedHat >= 7 by Ian Pilcher
2081 2002-01-14 Miklos Szeredi <miklos@szeredi.hu>
2083 * RPM support by Achim Settelmeier
2085 2002-01-09 Miklos Szeredi <miklos@szeredi.hu>
2087 * Version 0.95 released
2089 2002-01-09 Miklos Szeredi <miklos@szeredi.hu>
2091 * Revaidate all path components not just the last, this means a
2092 very small performance penalty for being more up-to-date.
2094 2002-01-08 Miklos Szeredi <miklos@szeredi.hu>
2096 * Update and fix python interface
2098 2002-01-07 Mark Glines <mark@glines.org>
2100 * Added statfs() support to kernel, lib, examples, and perl!
2102 2001-12-26 Miklos Szeredi <miklos@szeredi.hu>
2104 * Better cross compilation support
2106 * Ported to Compaq IPAQ
2108 2001-12-20 Miklos Szeredi <miklos@szeredi.hu>
2110 * Added function fuse_get_context() to library API (inspired by
2111 patch from Matt Ryan)
2113 * Added flags to fusermount and to kernel interface to control
2116 * Integrated fuse_set_operations() into fuse_new()
2118 2001-12-08 Miklos Szeredi <miklos@szeredi.hu>
2120 * Applied header protection + extern "C" patch by Roland
2123 2001-12-02 Miklos Szeredi <miklos@szeredi.hu>
2125 * Added perl bindings by Mark Glines
2127 2001-11-21 Miklos Szeredi <miklos@szeredi.hu>
2129 * Cleaned up way of mounting simple filesystems.
2131 * fuse_main() helper function added
2133 2001-11-18 Miklos Szeredi <miklos@szeredi.hu>
2135 * Optimized read/write operations, so that minimal copying of data
2138 2001-11-14 Miklos Szeredi <miklos@szeredi.hu>
2140 * Python bindings by Jeff Epler added
2142 2001-11-13 Miklos Szeredi <miklos@szeredi.hu>
2144 * Fixed vfsmount reference leak in fuse_follow_link
2146 * FS blocksize is set to PAGE_CACHE_SIZE, blksize attribute from
2147 userspace is ignored
2149 2001-11-09 Miklos Szeredi <miklos@szeredi.hu>