forked from osxfuse/fuse
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
3573 lines (2175 loc) · 107 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
FUSE 2.9.9 (2019-01-04)
=======================
* Added OpenAFS to whitelist (so users can now mount FUSE filesystems
on mountpoints within OpenAFS filesystems).
* Added a test of `seekdir` to test_syscalls.
* Fixed `readdir` bug when non-zero offsets are given to filler and the
filesystem client, after reading a whole directory, re-reads it from a
non-zero offset e. g. by calling `seekdir` followed by `readdir`.
FUSE 2.9.8 (2018-07-24)
=======================
* SECURITY UPDATE: In previous versions of libfuse it was possible to
for unprivileged users to specify the `allow_other` option even when
this was forbidden in `/etc/fuse.conf`. The vulnerability is
present only on systems where SELinux is active (including in
permissive mode).
* libfuse no longer segfaults when fuse_interrupted() is called outside
the event loop.
* The fusermount binary has been hardened in several ways to reduce
potential attack surface. Most importantly, mountpoints and mount
options must now match a hard-coded whitelist. It is expected that
this whitelist covers all regular use-cases.
* Fixed rename deadlock on FreeBSD.
FUSE 2.9.7 (2016-06-20)
=======================
* Added SELinux support.
* Fixed race-condition when session is terminated right after starting
a FUSE file system.
FUSE 2.9.6 (2016-04-23)
=======================
* Tarball now includes documentation.
* Shared-object version has now been bumped correctly.
FUSE 2.9.5 (2016-01-14)
=======================
* New maintainer: Nikolaus Rath <[email protected]>. Many thanks to
Miklos Szeredi <[email protected]> for bringing FUSE to where it is
now!
* fix warning in mount.c:receive_fd(). Reported by Albert Berger
* fix possible memory leak. Reported by Jose R. Guzman
FUSE 2.9.4 (2015-05-22)
=======================
* fix exec environment for mount and umount. Found by Tavis Ormandy
(CVE-2015-3202).
* fix fuse_remove_signal_handlers() to properly restore the default
signal handler. Reported by: Chris Johnson
* highlevel API: fix directory file handle passed to ioctl() method.
Reported by Eric Biggers
* libfuse: document deadlock avoidance for fuse_notify_inval_entry()
and fuse_notify_delete()
* fusermount, libfuse: send value as unsigned in "user_id=" and
"group_id=" options. Uids/gids larger than 2147483647 would result
in EINVAL when mounting the filesystem. This also needs a fix in
the kernel.
* Initilaize stat buffer passed to ->getattr() and ->fgetattr() to
zero in all cases. Reported by Daniel Iwan
* libfuse: Add missing includes. This allows compiling fuse with
musl. Patch by Daniel Thau
Older Versions (before 2013-01-01)
==================================
2013-06-20 Miklos Szeredi <[email protected]>
* libfuse: fix multiple close of device fd. Reported by Dan
Greenfield
2013-03-19 Miklos Szeredi <[email protected]>
* libfuse: fix thread cancel race. Exiting a worker my race with
cancelling that same worker. This caused a segmenation
fault. Reported and tested by Anatol Pomozov
2013-02-04 Miklos Szeredi <[email protected]>
* libfuse: fix crash in unlock_path(). Patch by Ratna Manoj
* libfuse: fix the 'remember' option. The lru list was not
initialized for the "/" path. This resulted in remove_node_lru()
crashing on LOOKUP-DOTDOT. Patch by Madan Valluri
* libfuse: configure: detect new util-linux
* libfuse: Use AC_CONFIG_HEADERS instead of AM_CONFIG_HEADER.
Patch by Anatol Pomozov
* libfuse: rename ./configure.in to ./configure.ac. Patch by
Anatol Pomozov
2012-10-01 Miklos Szeredi <[email protected]>
* Released 2.9.2
2012-10-01 Miklos Szeredi <[email protected]>
* Fix deadlock in libfuse. Running "svn update" on a fuse
filesystem could deadlock because of a bug in the way the paths
are locked. Reported by Kazuaki Anami
2012-08-23 Miklos Szeredi <[email protected]>
* Fix missing config.h in buffer.c. Reported by Matthew Gabeler-Lee
2012-08-14 Miklos Szeredi <[email protected]>
* Not unhashing the name in forget (commit on 2011-12-09) broke
the forget logic in a subtle way, resulting in "fuse internal
error: node NNN not found" and causing the filesystem daemon to
abort. Fix by incrementing the node refcount if nlookup goes from
zero to one. Reported by Kyle Lippincott
2012-08-13 Miklos Szeredi <[email protected]>
* Fix linking against GNU libiconv. Patch by Natanael Copa
2012-07-19 Miklos Szeredi <[email protected]>
* Released 2.9.1
2012-07-19 Miklos Szeredi <[email protected]>
* Fix crash caused by freeing a stack address. Reported by Itay
Perl
2012-07-04 Miklos Szeredi <[email protected]>
* Fix install of mount.fuse from out-of-tree build. Patch by
Olivier Blin
* Fix build with automake >= 1.12.1. Patch by Olivier Blin
2012-04-24 Miklos Szeredi <[email protected]>
* Add fallocate operation. Only works on linux kernels 3.5 or
later. Patch by Anatol Pomozov
2012-05-16 Miklos Szeredi <[email protected]>
* Linking to a library that uses threads requires the application
to be linked with -pthreads otherwise some pthread functions will
be linked to stubs in glibc. So move -pthread from Libs.private
to Libs in fuse.pc. Reported by Werner Fink
* Fix the compile command in the examples. Reported by Luciano
Dalle Ore
2012-04-20 Miklos Szeredi <[email protected]>
* Released 2.9.0
2012-04-20 Miklos Szeredi <[email protected]>
* Add missing fuse_fs_flock to fuse_versionscript
2012-04-10 Miklos Szeredi <[email protected]>
* Check protocol version before sending notifications and return
-ENOSYS if a particular notification is not supported.
* Add 'flag_utime_omit_ok' flag to fuse_operations. If the
filesystem sets this flag then ->utimens() will receive UTIME_OMIT
and UTIME_NOW values as specified in utimensat(2).
2012-01-27 Miklos Szeredi <[email protected]>
* Interpret octal escape codes in options. Requested by Jan
Engelhardt
2012-01-26 Miklos Szeredi <[email protected]>
* Add man pages for fusermount, mount.fuse and ulockmgr_server.
Lifted from the Debian package. The man pages were written by
Daniel Baumann and Bastien Roucaries
2012-01-13 Miklos Szeredi <[email protected]>
* Disable symbol versions on MacOSX. Patch by Anatol Pomozov
2012-01-02 Miklos Szeredi <[email protected]>
* Remove unnecessary mutex unlock at the end of multithreaded
event loop.
2011-12-09 Miklos Szeredi <[email protected]>
* Fix hang in wait_on_path(). Reported by Ville Silventoinen
* Don't unhash name in FORGET. This resulted in ENOENT being
returned for unlinked but still open files if the kernel sent a
FORGET request for the parent directory.
* Free request in fuse_reply_data().
2011-12-08 Miklos Szeredi <[email protected]>
* Fix build if FUSE_NODE_SLAB is not defined. Patch by Emmanuel
Dreyfus
* Check for availability of utimensat() function. Patch by
Emmanuel Dreyfus
2011-12-07 Miklos Szeredi <[email protected]>
* Add fuse_lowlevel_notify_delete() which tells the kernel that a
file or directory is deleted. Patch by John Muir
2011-12-06 Miklos Szeredi <[email protected]>
* Update retrieve_reply() method
2011-12-05 Miklos Szeredi <[email protected]>
* Low level API: lock argument of fuse_reply_lock should have a
'const' qualifier. Reported by Shachar Sharon
* Add support for ioctl on directories. Reported by Antonio SJ
Musumeci
2011-10-13 Miklos Szeredi <[email protected]>
* Reply to request with ENOMEM in case of failure to allocate
request structure. Otherwise the task issuing the request will
just freeze up until the filesystem daemon is killed. Reported by
Stephan Kulow
2011-09-23 Miklos Szeredi <[email protected]>
* Replace daemon() function with fork(). Patch by Anatol Pomozov
2011-08-26 Miklos Szeredi <[email protected]>
* If configured with --disable-mtab then don't call mount(8) from
libfuse to update the mtab. Reported by: James Sierp
2011-08-24 Miklos Szeredi <[email protected]>
* Use LRU list for cleaning up the cache if the "remember=T"
option was given. Patch by [email protected]
2011-07-06 Miklos Szeredi <[email protected]>
* Add ->flock() operation to low and high level interfaces. This
fixes problems with emulating flock() with POSIX locking.
Reported by Sebastian Pipping. As with lock/setlk/getlk most
filesystems don't need to implement this, as the kernel takes care
of file locking. The only reason to implement locking operations
is for network filesystems which want file locking to work between
clients.
2011-07-02 Sebastian Pipping <[email protected]>
* Make xmp_utimens of examples "fusexmp" and "fusexmp_fh"
not follow symlinks as other layers do that already.
2011-06-02 Miklos Szeredi <[email protected]>
* Add "remember" option. This works similar to "noforget" except
that eventually the node will be allowed to expire from the cache.
Patch by [email protected]
2011-05-27 Miklos Szeredi <[email protected]>
* Check if splice/vmsplice are supported
2011-05-26 Miklos Szeredi <[email protected]>
* Remove -lrt -ldl from fuse.pc for dynamic linking since
libfuse.so is already linked with these libraries. Reported by:
Nikolaus Rath
2011-05-20 Miklos Szeredi <[email protected]>
* Cleaner build output. Patch by Reuben Hawkins
2011-05-19 Miklos Szeredi <[email protected]>
* Disable splice by default, add "splice_read", "splice_write" and
"splice_move" options. Keep the "no_splice_*" variants, which can
disable splice even if the filesystem explicitly enables it.
2011-04-15 Max Krasnyansky <[email protected]>
* Added support for "auto_unmount" option which unmounts the
filesystem automatically on process exit (or crash).
2011-03-30 Miklos Szeredi <[email protected]>
* Patches by Laszlo Papp fixing various issues found by the
Coverity checker
2011-03-11 Miklos Szeredi <[email protected]>
* In case of failure to add to /etc/mtab don't umount. Reported
by Marc Deslauriers
2011-02-02 Miklos Szeredi <[email protected]>
* libfuse: In fuse_session_loop_mt() don't pause when exiting the
worker threads. The pause() was added in 2.2.1 to prevent
segfault on pthread_cancel() on an exited, detached thread. Now
worker threads are not detached and pthread_cancel() should work
fine even after the thread exited. Reported by Boris Protopopov
2011-01-31 Miklos Szeredi <[email protected]>
* fusermount: chdir to / before performing mount/umount
* fusermount: only allow mount and umount if util-linux supports
--no-canonicalize
2010-12-16 Miklos Szeredi <[email protected]>
* Highlevel lib: allow hash tables to shrink
* Highlevel lib: add slab allocation for node cache. This will
allow the memory used by the filesystem to grow and shrink
depending on how many inodes are currently cached.
2010-12-13 Miklos Szeredi <[email protected]>
* Highlevel lib: use dynamically resized hash table for looking up
by name and node ID.
2010-12-07 Miklos Szeredi <[email protected]>
* Allow batching of forget requests. This allows forget requests
to be processed faster and doesn't require a modification to fuse
filesystems. Reported by Terje Malmedal
* Add ->forget_multi() operation to the lowlevel API. The
filesystem may implement this to process multiple forget requests
in one call
* Fix the ambiguity of ioctl ABI on the kernel/userspace boundary
for 32bit vs. 64bit userspace
2010-11-10 Miklos Szeredi <[email protected]>
* Add new write_buf() method to the highlevel API. Similarly to
the lowlevel write_buf() method, this allows implementing zero
copy writes.
* Add a new read_buf() method to the highlevel API. This allows
returning a generic buffer from the read method, which in turn
allows zero copy reads.
* In fusexmp_fh implement the ->read_buf() and ->write_buf()
methods. Leave the ->read() and ->write() implementations for
reference, even though they are not necessary.
2010-11-08 Miklos Szeredi <[email protected]>
* Fix check for read-only fs in mtab update
* Open /dev/null for write instead of read for redirecting stdout
and stderr
* If umount(8) supports --fake and --no-canonicalize (util-linux-ng
version 2.18 or later), and umount(2) supports the
UMOUNT_NOFOLLOW flag (linux kernel version 2.6.35 or later) then,
"fusermount -u" will call the umount(2) system call and use
"umount --fake ..." to update /etc/mtab
* Added --disable-legacy-umount option to configure. This
disables the runtime checking of umount(8) version. When built
with this option then "fusermount -u" will fail if umount(8)
doesn't support the --fake and --no-canonicalize options.
* Fix fuse_buf_copy() if already at the end of the buffers
* Add new ->write_buf() method to low level interface. This
allows passig a generic buffer, either containing a memory buffer
or a file descriptor. This allows implementing zero copy writes.
* Add fuse_session_receive_buf() and fuse_session_process_buf()
which may be used in event loop implementations to replace
fuse_chan_recv() and fuse_session_process() respectively.
* Remove unnecessary restoring of current working directory in
"fusermount -u"
* Add ctx->pid to debug output
* Fix st_nlink value in high level lib if file is unlinked but
still open
* libfuse: add store request. Request data to be stored in the
kernel buffers for a given inode.
* libfuse: add retrieve request. Retrieve data stored in the
kernel buffers for a given inode.
2010-10-14 Miklos Szeredi <[email protected]>
* Use LTLIBICONV when linking libfuse. This fixes building against
uclibc + libiconv. Patch by Natanael Copa
2010-10-05 Miklos Szeredi <[email protected]>
* Add missing argument check in ulockmgr.c to prevent calling
ulockmgr_server with illegal arguments. This would cause an ever
growing list of ulockmgr_server processes with an endless list of
open files which finally exceeds the open file handle limit.
Patch by Markus Ammer
2010-09-28 Miklos Szeredi <[email protected]>
* Fix ambiguous symbol version for fuse_chan_new.
fuse_versionscript included fuse_chan_new in both FUSE_2.4 and
FUSE_2.6. Remove the FUSE_2.4, which is invalid.
2010-09-28 Miklos Szeredi <[email protected]>
* Fix option escaping for fusermount. If the "fsname=" option
contained a comma then the option parser in fusermount was
confused (Novell bugzilla #641480). Fix by escaping commas when
passing them over to fusermount. Reported by Jan Engelhardt
2010-08-27 Miklos Szeredi <[email protected]>
* Add NetBSD support. Patch from Emmanuel Dreyfus
2010-07-12 Miklos Szeredi <[email protected]>
* libfuse: add buffer interface. Add a generic buffer interface
for use with I/O. Buffer vectors are supplied and each buffer in
the vector may be a memory pointer or a file descriptor.
* The fuse_reply_fd() interface is converted to using buffers.
2010-06-23 Miklos Szeredi <[email protected]>
* Make the number of max background requests and congestion
threshold tunable. New options are "max_background" and
"congestion_threshold". Only effective on linux kernel versions
2.6.32 or greater. Patch by Csaba Henk
2010-06-17 Miklos Szeredi <[email protected]>
* Add fuse_reply_fd() reply function to the low level interface.
On linux version 2.6.35 or greater this will use splice() to move
data directly from a file descriptor to the fuse device without
needing to go though a userspace buffer. With the
FUSE_REPLY_FD_MOVE flag the kernel will attempt to move the data
directly into the filesystem's cache. On earlier kernels it will
fall back to an intermediate buffer. The options
"no_splice_write" and "no_splice_move" can be used to disable
splicing and moving respectively.
2010-06-15 Miklos Szeredi <[email protected]>
* Fix out-of-source build. Patch by Jörg Faschingbauer
* Add a "nopath" option and flag, indicating that path argument
need not be calculated for the following operations: read, write,
flush, release, fsync, readdir, releasedir, fsyncdir, ftruncate,
fgetattr, lock, ioctl and poll.
2010-05-10 Miklos Szeredi <[email protected]>
* Remove "chmod root" from install of fusermount. Reported by
Lucas C. Villa Real
2010-04-26 Miklos Szeredi <[email protected]>
* Released 2.8.4
2010-04-26 Miklos Szeredi <[email protected]>
* Fix checking for symlinks in umount from /tmp. Reported by Al
Viro
* Fix umounting if /tmp is a symlink. Reported by Franco Broi
2010-02-18 Miklos Szeredi <[email protected]>
* Fix definition of FUSE_OPT_END for C++. Reported by Tim
Bruylants
2010-02-03 Miklos Szeredi <[email protected]>
* Fix stack alignment for clone()
2010-02-01 Miklos Szeredi <[email protected]>
* Released 2.8.3
2010-02-01 Miklos Szeredi <[email protected]>
* Using "--no-canonicalize" with umount(8) conflicts with the race
fix, sinceit assumes the supplied path is absolute, while the race
fix relies on the path being relative to the current directory.
Reported by Tom Rindborg
2010-01-26 Miklos Szeredi <[email protected]>
* Released 2.8.2
2010-01-21 Miklos Szeredi <[email protected]>
* Fix race if two "fusermount -u" instances are run in parallel.
Reported by Dan Rosenberg
* Make sure that the path to be unmounted doesn't refer to a
symlink
2010-01-14 Miklos Szeredi <[email protected]>
* Fix compile error on FreeBSD. Patch by Jay Sullivan
2009-12-17 Miklos Szeredi <[email protected]>
* Use '--no-canonicalize' option of mount(8) (available in
util-linux-ng version 2.17 or greater) to avoid calling
readling(2) on the newly mounted filesystem before the mount
procedure is finished. This has caused a deadlock if "audit" was
enabled in the kernel. Also use '--no-canonicalize' for umount to
avoid touching the mounted filesystem.
2009-09-11 Miklos Szeredi <[email protected]>
* Released 2.8.1
2009-08-25 Miklos Szeredi <[email protected]>
* Fix missing versioned symbol fuse_get_context@FUSE_2.2
2009-08-18 Miklos Szeredi <[email protected]>
* Released 2.8.0
2009-08-18 Miklos Szeredi <[email protected]>
* Add missing fuse_session_data to versionscript
* Make sure all global symbols are prefixed with "fuse_" or "cuse_"
2009-07-16 Miklos Szeredi <[email protected]>
* Clarify how the protocol version should be negotiated between
kernel and userspace. Notably libfuse didn't correctly handle the
case when the supported major versions didn't match
* Add missing pthread link for libulockmgr. Patch by Petr Salinger
2009-07-02 Miklos Szeredi <[email protected]>
* The context is extended with a 'umask' field. The umask is sent
for mknod, mkdir and create requests by linux kernel version
2.6.31 or later, otherwise the umask is set to zero. Also
introduce a new feature flag: FUSE_CAP_DONT_MASK. If the kernel
supports this feature, then this flag will be set in conn->capable
in the ->init() method. If the filesystem sets this flag in in
conn->want, then the create modes will not be masked.
* Add low level interfaces for lookup cache and attribute
invalidation. This feature is available in linux kernels 2.6.31
or later. Patch by John Muir
* Kernel interface version is now 7.12
* fusermount: Do not silently ignore command line arguments.
Patch by Sebastian Harl
2009-06-19 Miklos Szeredi <[email protected]>
* Released 2.8.0-pre3
2009-06-19 Miklos Szeredi <[email protected]>
* Add fuse_getgroups (high level lib) and fuse_req_getgroups (low
level lib) functions to query the supplementary group IDs for the
current request. Currently this is implemented on Linux by
reading from the /proc filesystem.
2009-06-18 Miklos Szeredi <[email protected]>
* Add "noforget" option to high level lib to prevent ESTALE errors
on NFS exported filesystems. This result in paths being cached
forever, resulting in ever growing memory usage. Use with care.
* Add "no_remote_lock" option to disable remote file locking even
if the filesystem implements it. With this option locking
primitives (flock, lockf, fcntl(F_SETLK)) will still work, but
will ignore remotely locked files.
* CUSE patches from Tejun Heo:
* Unrestricted ioctl support left some debris. Clean them up:
o No reason to pass around pointer to flags. Pass flags directly.
o Clean up comment and prototype parameter names.
o fuse_lib_ioctl() didn't reply when get_path() failed. Fix it.
o Remove unused variables {in|out}_iov from fuse_lib_ioctl().
* Add fuse_reply_ioctl_iov()
* Move fuse_session, fuse_req and fuse_ll definitions to fuse_i.h
and make send_reply_iov() and fuse_setup_common() global (also in
fuse_i.h). These will be used by CUSE support.
* Restructure fuse_ll_process()
* Implement libfuse side of CUSE support. CUSE uses subset of FUSE
operations as dir operations don't make sense for CUSE where one
instance implements single character device.
CUSE support comes with its own cuse_lowevel_ops and related
initialization and helper functions. Except for initialization, it
usage is basically identical to FUSE.
This patch also adds example/cusexmp.c which can create a character
device with name and device number specified on command line. The
created device itself is pretty boring. It's a bit bucket supporting
read, write and access via ioctl.
2009-06-16 Miklos Szeredi <[email protected]>
* Add missing fuse_reply_bmap to versionscript. Debian
Bug#531329. Reported by Goswin Brederlow
2009-05-27 Miklos Szeredi <[email protected]>
* Don't call forget_node() if the lookup was negative and write()
for the reply returned ENOENT. Reported by John Haxby
2009-05-25 Miklos Szeredi <[email protected]>
* Add FUSE_CAP_EXPORT_SUPPORT to fuse_common.h
2009-05-08 Miklos Szeredi <[email protected]>
* Fix missing newlines in some printfs
* Fix 'make install-strip'. Reported by Dominick Layfield
2009-01-05 Miklos Szeredi <[email protected]>
* Released 2.8.0-pre2
2008-12-08 Miklos Szeredi <[email protected]>
* Implement poll support. Patch by Tejun Heo
* Add missing setattr flags to <fuse_lowlevel.h>.
* Only pass valid flags to ->setattr().
2008-12-05 Miklos Szeredi <[email protected]>
* Implement ioctl support. On high level interface only
"restricted" ioctls are supported (which are defined with the
_IO(), _IOR(), _IOW() or _IOWR() macros). Unrestricted ioctls
will only be allwed to CUSE (Character Device in Userspace)
servers. Patch by Tejun Heo
2008-11-28 Miklos Szeredi <[email protected]>
* If open sets fi->nonseekable, libfuse will tell the kernel that
the file is not seekable. Patch by Tejun Heo
2008-11-19 Miklos Szeredi <[email protected]>
* lowlevel lib: fix deadlock if fuse_reply_* is called from the
interrupt handling function. Reported by Tero Marttila
2008-10-16 Miklos Szeredi <[email protected]>
* Allow commas in options to be escaped with a backslash
* Add new function: fuse_opt_add_opt_escaped()
* Add missing fuse_reply_bmap() to the version script
2008-10-14 Miklos Szeredi <[email protected]>
* Pass current file flags to read and write operations
2008-07-24 Miklos Szeredi <[email protected]>
* Clean up debug output in highlevel lib
2008-07-10 Miklos Szeredi <[email protected]>
* Released 2.8.0-pre1
2008-06-27 Miklos Szeredi <[email protected]>
* Fix handling of (no)suid and (no)dev options if filesystem is
mounted from /etc/fstab or via mount(8). Reported by Jan Ondrej.
* Skip calling mount(8) if /etc/mtab doesn't exist or if it's on a
read-only filesystem. This works around issues with certain mount
implementations. Reported by Szabolcs Szakacsits.
2008-06-16 Miklos Szeredi <[email protected]>
* Remove fuse kernel module sources. Linux 2.6.27 will support
NFS exporting.
2008-06-10 Miklos Szeredi <[email protected]>
* Fix theoretical infinite loops in libfuse. Reported by Szabolcs
Szakacsits
* Fix missing <sys/param.h> include for PATH_MAX. Reported by
Szabolcs Szakacsits
2008-05-23 Miklos Szeredi <[email protected]>
* Fix mounting over symlink. Reported by Szabolcs Szakacsits
2008-05-09 Miklos Szeredi <[email protected]>
* Don't allow bigger than 4kB writes by default on 2.6.26 and
later kernels, so that filesystems not expecting this are not
broken on a kernel upgrade. Provide a 'big_writes' mount option
to enable this feature. In future API revisions this may become
the default.
2008-04-09 Miklos Szeredi <[email protected]>
* Update warning message for missing newline at end of fuse.conf
* Update debug message for successful operation to not include the
string "error:"
2008-04-08 Miklos Szeredi <[email protected]>
* Update error message for missing mountpoint parameter. Reported
by Allen Pulsifer
2008-04-04 Miklos Szeredi <[email protected]>
* Print library version information to debug output
* Highlevel lib: don't limit paths to 4095 characters
2008-03-25 Miklos Szeredi <[email protected]>
* Fix memory leaks on mount. Patch by Szabolcs Szakacsits
2008-03-19 Miklos Szeredi <[email protected]>
* Fix missing pthread_mutex_destroy in error path of
fuse_lib_opendir(). Patch by Szabolcs Szakacsits
2008-03-07 Miklos Szeredi <[email protected]>
* Add queuing on contention to per-node lock algorithm, to avoid
starvation.
* Only enable cancelation when reading a request, otherwise
cancellation could happen with a mutex held, which could hang the
process on umount
2008-02-08 Miklos Szeredi <[email protected]>
* Block SIGCHLD when executing mount and umount
* fusexmp_fh: avoid unnecessary seeking in readdir
* Update kernel interface to 7.9:
* Support receiving file handle from kernel in GETATTR request
* Allow operations with a NULL path argument, if the filesystem
supports it
* Add support atomic open(O_TRUNC)
* Support the st_blksize field in struct stat
* If the "FUSE_THREAD_STACK" environment is set, initialize the
stack size of threads by this value. Patch by Florin Malita
* Add per-node locking, instead of a global tree lock to protect
the path from changing during operations. Original patch by
Rodrigo Castro
2008-02-03 Csaba Henk <[email protected]>
* lib/mount_bsd.c:
- string formatting fixes
- exit if mounting has failed
(in FreeBSD a mount failure is not critical per se, as the daemon
still could be mounted externally, but waiting for such an event
is more confusing than fruitful)
- ditch the kvm(8) stuff and simply use forced unmount which just
won't block
- prettify option specifications
- add "-onosync_unmount" kernel option
2008-01-07 Csaba Henk <[email protected]>
* lib/mount_bsd.c:
- refine device closing in a race-free way
- add support for "-osubtype" on FreeBSD
* makeconf.sh: make it work under FreeBSD
2008-01-03 Csaba Henk <[email protected]>
* lib/mount_bsd.c: close device before unmount
(cf. lib/mount.c rev. 1.43) and fix some warnings
2007-12-23 Miklos Szeredi <[email protected]>
* Fix './configure --disable-static'. Patch from Ismail Dönmez
2007-12-17 Miklos Szeredi <[email protected]>
* Released 2.7.2
2007-12-12 Miklos Szeredi <[email protected]>
* Fix kernel module compile for 2.6.24
* Invalidate attributes of parent directory after create(), since
the modification time changes. Invalidate attributes on rename,
since some filesystems may update st_ctime. Reported by Szabolcs
Szakacsits
* Fix NFS exporting to handle 64bit node IDs
* Disable old symbol versions if __UCLIBC__ is defined. If a
symbol in a library has multiple versions, the runtime linker in
uClibc seems to randomly choose between them.
* Remove erroneous 'fuse_opt_insert_arg@FUSE_2_5' from
fuse_version_script. fuse_opt_free_args() was added in fuse-2.6.
* Close fuse device file descriptor before calling umount(),
preventing a deadlock when umount is synchronous. Reported by
Szabolcs Szakacsits
2007-11-12 Miklos Szeredi <[email protected]>
* 'fusermount -u' did not umount the filesystem if /etc/mtab was a
symlink. This bug was introduced in 2.7.1 by "Don't call
/bin/[u]mount if /etc/mtab is a symlink". Found by robertsong.
2007-10-16 Miklos Szeredi <[email protected]>
* Released 2.7.1
2007-10-16 Miklos Szeredi <[email protected]>
* Clarify licence version to be "LGPLv2" for the library
* kernel fixes:
* After mount set nlink attribute for the root inode to 1
* Fix wake up of task waiting for a reserved request
* Fix allowing setattr, listxattr and statfs for other users
2007-09-18 Miklos Szeredi <[email protected]>
* Add missing context initialization in fuse_fs_chmod(). Bug
found by "iohead"
* Fix kernel module compilation for 2.6.23. Based on patch by
Marian Marinov
2007-09-04 Philippe Elie <[email protected]>
* lib/fuse_lowlevel.c: fix a fuse_req leak in do_forget()
2007-07-31 Miklos Szeredi <[email protected]>
* Work around hotplug issue, that it calls filesystem with file
descriptors 0, 1 and 2 not open. Tracked down by Leif Johnson
2007-07-25 Miklos Szeredi <[email protected]>
* Don't call /bin/[u]mount if /etc/mtab is a symlink. Reported by
Tomas M
* Also don't touch /etc/mtab if it is within the mounted
filesystem. Suggested by Jeffrey Law
2007-07-12 Miklos Szeredi <[email protected]>
* Reset args->argc in fuse_opt_free_args(). Patch by Lucas
C. Villa Real
2007-07-02 Miklos Szeredi <[email protected]>
* Released 2.7.0
2007-07-02 Miklos Szeredi <[email protected]>
* Accept a NULL "op" for fuse_main(), etc. This is useful if
filesystem is only invoking fuse to print a help message, or
version. Fixes RedHat bugzilla #217343
2007-06-22 Miklos Szeredi <[email protected]>
* lib: fix locking when loading a filesystem module
2007-06-21 Miklos Szeredi <[email protected]>
* Add fs subtype support to mount.fuse
2007-06-20 Miklos Szeredi <[email protected]>
* Add fs subtype support to libfuse and fusermount
2007-06-19 Miklos Szeredi <[email protected]>
* kernel: sync with mainline (2.6.22)
2007-06-18 Miklos Szeredi <[email protected]>
* Send debug output to stderr instead of stdout. Patch by Jan
Engelhardt
2007-06-03 Miklos Szeredi <[email protected]>
* libulockmgr: Work around a kernel bug in recv(), causing it to
sometimes return zero even if data was available on the socket.
2007-05-29 Miklos Szeredi <[email protected]>
* lib: optimization: store parent pointer in node instead of
parent id
2007-05-25 Miklos Szeredi <[email protected]>
* lib: don't create new thread for each FORGET request. FORGET
messages sometimes caused so many threads to be created, that
process virtual memory space ran out. Reported by Chris AtLee
2007-05-24 Miklos Szeredi <[email protected]>
* lib: fix memory leak on thread creation failure in multithreaded
event loop. Found by Chris AtLee
2007-05-23 Miklos Szeredi <[email protected]>
* lowlevel lib: add fuse_reply_iov function, which is similar to
fuse_reply_buf, but accepts a vector of buffers. Patch by Roger
Willcocks
2007-05-21 Miklos Szeredi <[email protected]>
* Fix Oops or error if a regular file is created with mknod(2) on
a fuse filesystem. Kernels 2.6.18 onward are affected. Thanks to
J. Cameijo Cerdeira for the report
2007-05-11 Csaba Henk <[email protected]>
* libfuse: fix return value of fuse_loop()/fuse_loop_mt().
Error reported by Csaba Henk, fix by Miklos Szeredi
* libfuse: fix unlock in flush
* libfuse: do unlocking on RELEASE+FLUSH
2007-05-03 Miklos Szeredi <[email protected]>
* Released 2.7.0-rc1
2007-05-02 Miklos Szeredi <[email protected]>
* kernel: sync with mainline:
* Use invalidate_mapping_pages() if available
* Fix BUG when invalid file type is supplied in mount. Patch by
Timo Savola
2007-04-27 Miklos Szeredi <[email protected]>
* libfuse: call umount(8) directly instead of fusermount if
possible
* Clean up init script, make it LSB compliant
2007-04-26 Miklos Szeredi <[email protected]>