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