-
Notifications
You must be signed in to change notification settings - Fork 13
/
ChangeLog
743 lines (610 loc) · 36.2 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
2016-06-08 Justin Needham <[email protected]>
Migrate from gmcs to mcs for Mono 4.*
* configure.ac: gmcs --> mcs
* doc/en/Mono.Fuse/FileSystem.xml : gmcs --> mcs
2008-04-01 Jonathan Pryor <[email protected]>
* configure.in: Error if `mono' can't be found (not continue), and continue
if `monodoc' can't be found (not error). Simplify.
2008-01-30 Jonathan Pryor <[email protected]>
* configure.in: Bump version numbers; genreate mono-fuse.spec.
* Makefile.am: Add `rpm', `prepare-release' targets.
* example/HelloFS/Makefile.am, example/RedirectFS/Makefile.am,
lib/mono-fuse/Makefile.am, src/Mono.Fuse/Makefile.am,
src/MonoFuseHelper/Makefile.am: Enhance so `make distcheck works`.
* .gitignore, doc/.gitignore, example/HelloFS/.gitignore,
example/RedirectFS/.gitignore, lib/.gitignore, lib/mono-fuse/.gitignore,
lib/pkgconfig/.gitignore, src/Mono.Fuse/.gitignore,
src/MonoFuseHelper/.gitignore: Added; ignore generated files.
* INSTALL: Added; install information.
* src/Mono.Fuse/AssemblyInfo.cs.in: Added; contains assembly version info.
* mono-fuse.spec.in: Added; RPM .spec file; thanks to
Jay Miller <[email protected]> for the original version.
2007-06-29 Jonathan Pryor <[email protected]>
* configure.in: My sh-fu needs work. Properly check the return value of
`gmcs' so I can determine whether it compiled successfully.
2007-06-29 Jonathan Pryor <[email protected]>
* configure.in: Use a better check for the
Mono.Unix.Native.NativeConvert.TryCopy() methods, as relying on
libMonoPosixHelper.so is inadequate.
* src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Use NativeConvert.TryCopy(), not
NativeConvert.Copy(). (NativeConvert.Copy() was only proposed, but never
made it into an official Mono.Posix release, while .TryCopy did.)
2007-04-17 Jonathan Pryor <[email protected]>
* example/HelloFS/hellofs.in, example/RedirectFS/redirectfs.in,
example/RedirectFS/redirects-fh.in: Define DYLD_LIBRARY_PATH so that
example programs work seamlessly on OS X as well as Linux.
* lib/mono-fuse/Mono.Fuse.dll.config: Added; Mono dllmap config file so that
MonoFuseHelper is redirected to libMonoFuseHelper.dylib on Mac OS X.
* src/Mono.Fuse/Makefile.am: Install the Mono.Fuse.dll.mdb and
Mono.Fuse.dll.config files.
2007-04-17 Jonathan Pryor <[email protected]>
* src/MonoFuseHelper/Makefile.am: Define HAVE_STRUCT_FUSE_ARGS so that
map.c's Mono_Fuse_ToArgs() and Mono_Fuse_FromArgs() will be compiled.
Otherwise, we get an unsatisfied link error when loading MonoFuseHelper.
2007-04-17 Jonathan Pryor <[email protected]>
* src/Mono.Fuse/create-native-map.exe, src/Mono.Fuse/MapAttribute.cs: Update
to latest versions (fixes buggy overflow checking in MonoFuseHelper).
* lib/Mono.Fuse/Makefile.am: FUSE_USE_VERSION should be in the .c file, not
the .h file. Also fixes Mac OS X compilation, as FUSE_USE_VERSION needs
to be defined *before* including <fuse.h>, but <fuse.h> is inserted before
the include of lib/map.h -- bad order.
2007-01-17 Jonathan Pryor <[email protected]>
* src/MonoFuseHelper/Makefile.am: Use $(LIBTOOL), not `libtool', as the
libtool program may go by different names on different platforms (e.g.
glibtool on OS X).
2006-10-31 Jonathan Pryor <[email protected]>
* example/HelloFS/HelloFS.cs: Add extra Trace statements; remove unused code.
2006-10-23 Jonathan Pryor <[email protected]>
* src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Add [In,Out] to the
FileSystmeOperationContext parameter in mfh_fuse_get_context().
Otherwise, the data is never marshaled back into managed memory, so all
fields are zero'd out (making the method useless). Oops!
2006-10-12 Jonathan Pryor <[email protected]>
* doc/mono-fuse-docs.source: Update @basefile to contain the actual
basefile. Allows installed monodoc documentation to work.
2006-10-12 Jonathan Pryor <[email protected]>
* doc/Makefile.am: Add `-pretty' so monodocer produces nicely indented XML.
* doc/en/Mono.Fuse/DirectoryEntry.xml, doc/en/Mono.Fuse/FileSystem.xml,
doc/en/Mono.Fuse/FileSystemOperationContext.xml,
doc/en/Mono.Fuse/OpenedPathInfo.xml: Flush documentation (largest change
was due to reformatting of XML). Also used svn version of monodocer to
get proper Generics-formatted method declarations, so
FileSystem.OnReadDirectory now lists a parameter of
System.Collections.Generic.IEnumerable<Mono.Fuse.DirectoryEntry> instead
of System.Collections.Generic.IEnumerable`1[[Mono.Fuse.DirectoryEntry,
Mono.Fuse, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]].
* src/Mono.Fuse/create-native-map.exe: Commit latest version; fixes #ifndef
name formatting so that SYMBOL in "#ifndef SYMBOL" doesn't contain `/'.
2006-09-21 Jonathan Pryor <[email protected]>
* configure.in: Remove checks for mint. Mint is dead.
2006-09-21 Jonathan Pryor <[email protected]>
* doc/en/Mono.Fuse/FileSystem.xml, doc/en/Mono.Fuse/OpenedPathInfo.xml:
Minor doc updates.
2006-09-20 Jonathan Pryor <[email protected]>
* doc/Makefile.am: Create mono-fuse-docs.* files, not mono-fuse.* files.
This matches Gtk#, and allows for clarity if we ever have
mono-fuse-docs.zip and mono-fuse-VERSION.tar.gz in the same directory.
* doc/en/index.xml, doc/en/Mono.Fuse.xml, doc/en/Mono.Fuse/DirectoryEntry.xml,
doc/en/Mono.Fuse/FileSystem.xml,
doc/en/Mono.Fuse/FileSystemOperationContext.xml,
doc/en/Mono.Fuse/OpenedPathInfo.xml: Add documentation.
* doc/en/Mono.Fuse/FileSystemEntry.xml: Renamed to DirectoryEntry.xml.
* example/HelloFS/HelloFS.cs: Use DirectoryEntry instead of FileSystemEntry;
use OpenedPathInfo.OpenAccess instead of OpenedPathInfo.OpenReadOnly.
* example/RedirectFS/RedirectFS.cs, example/RedirectFS/RedirectFS-FH.cs: Use
DirectoryEntry instead of FileSystemEntry;
s/OnCloseDirectory/OnReleaseDirectory/.
* src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Changes by type:
- FileSystemOperationContext:
- Make sealed (this should only be created internally).
- Constructor is now internal.
- FileSystemEntry:
- Renamed to DirectoryEntry.
- Renamed Path property to Name.
- Add argument checking to DirectoryEntry constructor.
- Remove implicit conversion to string (as constructor may generate
exceptions).
- OpenedPathInfo:
- Make seaeled (this should only be created internally).
- Constructor now internal.
- Remove OpenReadOnly, OpenWriteOnly, OpenReadWrite properties
- Add OpenAccess property.
- FileSystem:
- Now `abstract'. There are no abstract methods, but it's pointless
to create instances of this type, as it wouldn't do anything.
- Make constructors protected (to emphasize the above).
- Rename FileSystemName property to Name.
- Rename ImmediateRemoval property to ImmediatePathRemoval.
- Rename DirectIO property to EnableDirectIO.
- Rename Umask property to DefaultUmask.
- Add EnableKernelCache property.
- Rename UserId property to DefaultUserId.
- Rename GroupId property to DefaultGroupId.
- Rename EntryTimeout property to PathTimeout.
- Rename DeletedNameTimeout property to DeletedPathTimeout.
- Change types of Timeout properties to `double' from `int'; changes
PathTimeout, DeletedPathTimeout, AttributeTimeout.
- Rename OnCloseDirectory() method to OnReleaseDirectory() (for
consistency with OnReleaseHandle).
- Rename Exit() method to Stop().
- Rename parameters of many methods to match the method names -- e.g.
OnReadSymbolicLink() takes a `link' parameter instead of `path',
OnOpenDirectory() takes a `directory' parameter instead of `path', etc.
2006-09-12 Jonathan Pryor <[email protected]>
* src/Mono.Fuse/Makefile.am: Add FileNameMarshaler to the build.
* src/Mono.Fuse/Mono.Fuse/FileNameMarshaler.cs: Added; marshals filenames
with any encoding to/from managed code (from
Mono.Unix.Native.FileNameMarshaler).
* src/Mono.Fuse/Mono.Fuse/FileSystem.cs:
- Use the FileNameMarshaler custom marshaler to manipulate filenames
entering/leaving managed code. This allows manipulation of filenames
with non-UTF8 encodings.
- Reimplement FillEntries(). When mfh_invoke_filler() returns 1, it means
that the current entry was not inserted, and needs to be inserted during
the next call. Previously, if a directory had many files (i.e.
_OnReadDirectory() was called > 2 times), it would "drop" the file that
was passed to mfh_invoke_filler() when it returned 1. Now, when
mfh_invoke_filler() return 1, we remember this and return the current
entry a 2nd time so that nothing is lost.
2006-09-11 Jonathan Pryor <[email protected]>
* configure.in: Fix test for HAVE_MONO_UNIX_NATIVE_COPY_FUNCS; Add check for
`mdassembler' and `monodocer' (from monodoc module); create doc/Makefile.
* Makefile.am: Add `doc' directory to the build.
* doc/Makefile.am: Added; build the Monodoc documentation.
* doc/README: Added; short overview for adding docs to monodoc.
* doc/mono-fuse.source: Added; monodoc source file (where in the tree the
Mono.Fuse sources should be placed).
* doc/en/index.xml, doc/en/Mono.Fuse.xml, doc/en/Mono.Fuse/FileSystem.xml,
doc/en/Mono.Fuse/FileSystemEntry.xml,
doc/en/Mono.Fuse/FileSystemOperationContext.xml,
doc/en/Mono.Fuse/OpenedPathInfo.xml: Added; API documentation stubs.
* src/MonoFuseHelper/Makefile.am: Remove automake warning message.
2006-09-11 Jonathan Pryor <[email protected]>
* example/HelloFS/HelloFS.cs: Add extended attribute support for the
`hello' file.
2006-09-11 Jonathan Pryor <[email protected]>
* src/Mono.Fuse/Mono.Fuse/FileSystem.cs:
- Property renaming: s/Options/FuseOptions/g.
- Method renaming:
s/OnSetPathExtendedAttributes/OnSetPathExtendedAttribute/g;
s/OnGetPathExtendedAttributes/OnGetPathExtendedAttribute/g;
- Method argument changing:
s/OnListPathExtendedAttributes(string, byte[], out int)/
OnListPathExtendedAttributes(string, out string[])/
* example/HelloFS/HelloFS.cs: s/\.Options/.FuseOptions/g.
* example/HelloFS/Makefile.am: Add `-debug+' to compile line for
HelloFS.exe; add Mono.Fuse.dll.mdb for line numbers in stack traces.
* example/RedirectFS/RedirectFS.cs, example/RedirectFS/RedirectFS-FH.cs:
Update to latest OnSetPathExtendedAttribute(),
OnGetPathExtendedAttribute(), OnListPathExtendedAttributes() methods.
2006-09-09 Jonathan Pryor <[email protected]>
* src/Mono.Fuse/Mono.Fuse.FileSystem.cs:
- Add new public type FileSystemEntry, which provides both a Path string
and a Mono.Unix.Native.Stat instance that can be passed to FUSE. The
Stat instance will _only_ be used if Stat.st_ino is non-zero.
- Change FileSystemOperationContext to use read-only properties instead of
fields, as this information can't be changed. Change ProcessId to `int'
instead of `long', for consistency with Mono.Posix.
- Change FileSystem.OnReadDirectory() to use IEnumerable<FileSystemEntry>
instead of IEnumerable<string>. This allows sub-classes to (optionally)
provide Stat information to FUSE. (Currently FUSE will only use the
st_ino & st_mode fields of the Stat, though I imagine this may be
expanded in the future.)
* src/MonoFuseHelper/mfh.c: Use current field names in
FileSystemOperationContext.
* example/HelloFS/HelloFS.cs:
s/IEnumerable<string>/IEnumerable<FileSystemEntry>/g (migrate to latest
Mono.Fuse.FileSystem.OnReadDirectory() prototype).
* example/RedirectFS/RedirectFS.cs, example/RedirectFS/RedirectFS-FH.cs:
s/IEnumerable<string>/IEnumerable<FileSystemEntry>/g (migrate to latest
Mono.Fuse.FileSystem.OnReadDirectory() prototype); Fill in
FileSystemEntry.Stat for use by FUSE.
2006-09-08 Jonathan Pryor <[email protected]>
* src/Mono.Fuse/Mono.Fuse/FileSystem.cs:
- Redo OnReadDirectory() implementation to use a IEnumerator instead of a
string[]. The previous approach required reading in the entire
directory all at once, which would slow things down for large
directories. The new approach allows FUSE to invoke _OnReadDirectory()
multiple times to read from the same enumerator, allowing directory
entries to be returned in "chunks" instead of all at once.
Plus, it's damn cool to use a C# iterator to implement
OnReadDirectory() (see HelloFS.cs & RedirectFS-FH.cs).
- Remove check for OnCreateHandle()/OnOpenHandle() & OnReleaseHandle()
consistency -- this broke the build (HelloFS has OnOpenHandle() but not
OnReleaseHandle(), and it doesn't need OnReleaseHandle() either).
* src/MonoFuseHelper/mfh.c: Help implement new OnReadDirectory() interface;
add mfh_invoke_filler() helper method.
* example/HelloFS/HelloFS.cs, example/RedirectFS/RedirectFS.cs,
* example/RedirectFS/RedirectFS-FH.cs: Implement updated OnReadDirectory()
interface. (Using iterators for OnReadDirectory is cool; especially
check out the new RedirectFS-FH.cs implementation.)
2006-09-07 Jonathan Pryor <[email protected]>
* src/Mono.Fuse/Mono.Fuse/FileSystem.cs:
- Add initial validation for method overriding -- some methods come in
sets. For example, if OnOpenDirectory is overridden, OnCloseDirectory()
should be as well (to ensure that any handles are closed if desired).
Perform such sanity checking.
- Correct GetOperations() so that the methods it finds via Reflection
actually override the methods it thinks are being overridden.
2006-09-07 Jonathan Pryor <[email protected]>
* example/HelloFS/HelloFS.cs: Update help text to show FUSE options.
* example/RedirectFS/RedirectFS.cs, example/RedirectFS/RedirectFS-FH.cs:
Update help text to show FUSE options. Alter command line arguments to be
"program mountpoint basedir" (instead of "program basedir mountpoint") so
that it matches the FUSE-generated help text.
* src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Add ShowFuseHelp static method to
display FUSE help options to stderr.
* src/MonoFuseHelper/mfh.c: Add mfh_show_fuse_help() helper.
2006-09-07 Jonathan Pryor <[email protected]>
* configure.in: Generate Makefile for new directory example/RedirectFS.
* src/Mono.Fuse/MapAttribute.cs: Update to latest mono-tools version.
* src/Mono.Fuse/create-native-map.exe: Update to latest mono-tools version
(removes support for MapAttribute.NativeSymbolPrefix, as this is no longer
useful since MonoPosixHelper doesn't have a public API).
* src/Mono.Fuse/Mono.Fuse/FileSystem.cs:
- Rename OpenedPathInfo.FileHandle to OpenedPathInfo.Handle (as the
handle can be used by both files & directories).
- Change ReadSymbolicLinkCb/OnReadSymbolicLink() as Mono can't pass a
StringBuilder from native to managed code (it's a managed->native
construct), so use a workable alternative. The new
``OnReadSymbolicLink(string path, out string target)'' prototype is also
simpler for subclasses.
- Native code can't pass an OpenedPathInfo into managed code via the
delegates, as the delegates need to modify OpenedPathInfo.Handle and
have this change propogate back to native code. Ideally, this would be
fixed by making the delegates have an "[In, Out] OpenedPathInfo info"
parameter (instead of the current "IntPtr" + manual marshal approach),
but this causes Mono to die -- bugzilla 79298. This is now fixed, but
only in HEAD, so we need the ugly workaround for 1.1.13.x support.
- Add support for parsing the `-f' FUSE argument (use foreground
operation; ignored, as we can only support foreground operation).
- Don't throw Exception if MountPoint can't be mounted or mfh_fuse_new
fails, throw a NotSupportedException. (Perhaps I should use a
different type?)
- Remove some Console.WriteLine()s.
* src/MonoFuseHelper/Makefile.am: $(buildlibdir)/libMonoFuseHelper.so should
be updated when its sources are updated.
* src/MonoFuseHelper/mfh.c:
- Add Mono_Fuse_FromOpenedPathInfo and Mono_Fuse_ToOpenedPathInfo (for
struct fuse_file_info conversion), so it can be invoked by Mono.Fuse.dll.
- Remove support for fuse_file_info->OpenedPathInfo conversion from
MonoFuseHelper, this must now be done in managed code (see #79298).
- mfh_readdir: Check return value of `filler' method to check for errors.
* example/Makefile.am: Add new directory RedirectFS.
* example/RedirectFS/Makefile.am: Added; build RedirectFS programs.
* example/RedirectFS/RedirectFS.cs: Added; FS which forwards ("redirects")
all FileSystem operations to the underlying filesystem.
* example/RedirectFS/redirectfs.in: Added; runs RedirectFS.exe.
Syntax: redirectfs BASEDIR MOUNT-POINT
e.g. ./redirects /tmp t
* example/RedirectFS/RedirectFS-FH.cs: Added; FS which forwards ("redirects")
all FileSystem operations to the underlying filesystem.
This uses OpenedPathInfo.Handle to track file & directory handles instead
of re-opening files & directories all the time (compare to RedirectFS.cs).
* example/RedirectFS/redirectfs-fh.in: Added; runs RedirectFS-FH.exe.
Syntax: redirectfs-fh BASEDIR MOUNT-POINT
e.g. ./redirects-fh /tmp t
2006-09-05 Jonathan Pryor <[email protected]>
* src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Mass API renaming for consistency.
- s/OpenedFileInfo/OpenedPathInfo/g (for consistency with method naming
convention, below, as it's used with both files & directories).
- Remove FileSystemOperationContext.PrivateData (it's used internally).
- Rename properties: s/EnableDebugOutput/EnableFuseDebugOutput/.
- Add MultiThreaded property (default true), remove StartMultithreaded()
method. Start() checks the MultiThreaded property and calls the
appropriate FUSE method for (non-) multithreaded use.
- Make OpenedPathInfo parameter 2nd parameter instead of the (variable)
last parameter (so that `out' parameters can consistently be the last
parameter and paramater placement is consistent).
- Change method names for consistency, ease understanding, and help the
impending documentation effort to include one of the following words:
- Directory: Method deals with directories and not files.
- OnCreateDirectory(), OnRemoveDirectory(), OnOpenDirectory(),
OnReadDirectory(), OnCloseDirectory(), OnSynchronizeDirectory().
- File: Method deals with files and not directories.
- OnCreateSpecialFile(), OnRemoveFile(), OnTruncateFile().
- FileSystem: Method deals with the file system as a whole.
- OnGetFileSystemStatus().
- Link: Method deals with actual links (symbolic & hard links)
- OnCreateHardLink(), OnCreateSymbolicLink(), OnReadSymbolicLink().
- Handle: Method deals with a "handle" to an opened file.
- OnCreateHandle(), OnOpenHandle(), OnReadHandle(), OnWriteHandle(),
OnFlushHandle(), OnReleaseHandle(), OnSynchronizeHandle(),
OnTruncateHandle(), OnGetHandleStatus().
- Path: Method works on files and directories.
- OnAccessPath(), OnGetPathStatus(), OnRenamePath(),
OnChangePathPermissions(), OnChangePathOwner(), OnChangePathTimes(),
OnGetPathExtendedAttributes(), OnListPathExtendedAttributes(),
OnSetPathExtendedAttributes(), OnRemovePathExtendedAttribute().
* src/MonoFuseHelper/mfh.c: Deal with s/OpenedFileInfo/OpenedPathInfo/g.
* example/HelloFS/HelloFS.cs: Deal with FileSystem method name changes.
2006-09-03 Jonathan Pryor <[email protected]>
* COPYING: Specify license as MIT/X11.
* example/HelloFS/HelloFS.cs, src/Mono.Fuse/FileSystem.cs,
src/MonoFuseHelper/mfh.c, src/MonoFuseHelper/mph.c: Add license.
2006-09-01 Jonathan Pryor <[email protected]>
* README: Add note about using fusermount to unmount FUSE filesystems.
2006-09-01 Jonathan Pryor <[email protected]>
* configure.in: Set required Mono version is 1.1.13 (maybe could be
lowered? No idea); add check for presence of Mono_Posix_ToStat in
MonoPosixHelper -- if found, then we should have the new
Mono.Unix.Native.NativeConvert.Copy methods, otherwise we need to roll our
own equivalents. This allows portability to "down-level" mono versions.
* src/Mono.Fuse/create-native-map.exe: Update; this version doesn't skip
prototypes for structs within a different assembly, it generates struct
declarations for all structs referenced (needed to get struct decls for
Stat, Statvfs, etc.)
* src/Mono.Fuse/Makefile.am: Add --rename-member arguments to
create-native-map call so Stat can be used properly.
* src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Only use NativeConvert.Copy methods
if HAVE_MONO_UNIX_NATIVE_COPY_FUNCS is defined, otherwise use the
MonoFuseHelper internal methods.
* src/MonoFuseHelper/Makefile.am: Add mph.c to the build.
* src/MonoFuseHelper/mph.c: Added; structure copy functions from
MonoPosixHelper for copying Stat, Statvfs, & Utimbuf between managed &
native code.
2006-09-01 Jonathan Pryor <[email protected]>
* README: Add comments about hellofs command-line arguments, capturing trace
messages, and FUSE performance timing.
* example/HelloFS/hellofs.in: Modify setting of LD_LIBRARY_PATH so that it
retains the existing $LD_LIBRARY_PATH value. Remove -odebug parameter.
If you want "full" trace output, set MONO_TRACE_LISTENER for the managed
trace output, and add -odebug for FUSE trace output, e.g.
MONO_TRACE_LISTENER=Console.Out:### ./hellofs -odebug mount-point
2006-08-31 Jonathan Pryor <[email protected]>
* src/Mono.Fuse/Makefile.am: Remove dependency on external
create-native-map.exe and a public Mono.Unix.Native.MapAttribute (as the
latter will no longer be public). Add `update-map-source' target which
uses pkg-config to copy the "reference" MapAttribute.cs &
create-native-map.exe programs from their installed locations.
* src/Mono.Fuse/create-native-map.exe, src/Mono.Fuse/MapAttribute.cs: Added;
cached versions of create-native-map.exe & MapAttribute.cs as provided by
pkg-config and the create-native-map.pc file.
2006-08-31 Jonathan Pryor <[email protected]>
* configure.in: Remove use of mono-posix-helper.pc, and use glib-2.0
instead.
* src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Change the delegates so that they
use only native types, not managed types. Change all of the _On*
methods to do the native->managed conversion for parameters and the return
value (depends upon addition of Mono.Unix.Native.NativConvert.Copy()
methods to perform structure conversion). Make OpenedFileInfo.flags
internal, so that FileSystem can convert the value when necessary,
as MonoFuseHelper can't do the enum convert.
* src/MonoFuseHelper/Makefile.am: Remove use of MPH, and add GLIB flags.
* src/MonoFuseHelper/mfh.c: Remove use of MonoPosixHelper functions (as
Mono.Fuse.FileSystem does the type conversions now). Don't copy-out
OpenedFileInfo.flags, as this enum must be converted in managed, and I
don't see much point in having another conversion on exit when I can just
skip the copy-out (thus preserving the original value).
2006-08-31 Jonathan Pryor <[email protected]>
* example/HelloFS/HelloFS.cs: Make creation of data_im_str thread-safe, so
that it's only created once and reading threads don't see an intermediate
state.
2006-08-28 Jonathan Pryor <[email protected]>
* example/HelloFS/HelloFS.cs: Rename the ``data'' file to ``data.im'' (this
is a text file with 100MB of data), and replace ``data'' with a file which
computes its content at runtime (a time/space tradeoff). The ``data.im''
file isn't available by default; pass --data.im-in-memory to make it
available (note that this file will be created in-memory the first time
its content is accessed). Add command-line argument parsing. Use
Trace.WriteLine instead of Console.WriteLine.
* lib/pkgconfig/mono-fuse.pc.in: Use @libdir@ instead of
${prefix}/@reloc_libdir@. I'm not sure what @reloc_libdir@ is supposed to
be, and it isn't currently expanded anyway.
* src/Mono.Fuse/Makefile.am: Add the -d:TRACE define. Add --public-macro
and --impl-header to the create-native-map call (create-native-map no
longer supports MapHeaderAttribute).
* src/Mono.Fuse/Mono.Fuse/FileSystem.cs: Remove use of
Mono.Unix.Native.MapHeaderAttribute (use create-native-map arguments
instead). Add public argument parsing support (so that HelloFS can have
its own command-line args in addition to the FUSE args). Use Trace
instead of Console for trace messages. Add a `catch(Exception)' handler
so we can trace exception messages (helps debugging).
2006-08-25 Jonathan Pryor <[email protected]>
* src/MonoFuseHelper/mfh.c: Remove debug printf statements.
2006-08-24 Jonathan Pryor <[email protected]>
* Makefile.am: Build the `lib' directory.
* lib/mono-fuse/Makefile.am: Don't install anything;
src/Mono.Fuse/Makefile.am already handles Mono.Fuse.dll installation.
2006-08-24 Jonathan Pryor <[email protected]>
* configure.in: Don't forget to generate lib/mono-fuse/Makefile!
2006-08-24 Jonathan Pryor <[email protected]>
* lib/Makefile.am: Build the mono-fuse directory as well
* lib/mono-fuse/Makefile.am: Added; installs Mono.Fuse.dll.
2006-08-24 Jonathan Pryor <[email protected]>
* NEWS: Added
* configure.in: Use AM_PROG_LIBTOOL, not AC_PROG_LIBTOOL, to satisfy
autogen.sh's checking.
2006-08-24 Jonathan Pryor <[email protected]>
* AUTHORS, COPYING, README: Added (for autoconf)
* autogen.sh, configure.in, Makefile.am, example/Makefile.am,
example/HelloFS/Makefile.am, lib/Makefile.am, lib/pkgconfig/Makefile.am,
src/Makefile.am, src/Mono.Fuse/Makefile.am,
src/MonoFuseHelper/Makefile.am: Added (auto* build system files).
* lib/map.c, lib/map.h: Removed (generated by the build; no need to keep
these under version control).
* lib/mfh.c: Renamed to src/MonoFuseHelper/mfh.c
* lib/mph.c: Removed. (Functions added to MonoPosixHelper library.)
* lib/mono-fuse/HelloFS.cs: Renamed to example/HelloFS/HelloFS.cs
* example/HelloFS/hellofs.in: Added; template for `hellofs' program.
* lib/mono-fuse/MakeMap.Test.cs, lib/mono-fuse/make-map.cs,
lib/mono-fuse/test.c.ref, lib/mono-fuse/test.cs.ref,
lib/mono-fuse/test.h.ref, lib/mono-fuse/test.xml.ref: Removed.
make-map.exe renamed to create-native-map.exe, moved into
mcs svn module under mcs/tools/create-native-map.
* lib/pkgconfig/mono-fuse.pc.in: Remove Requires line (managed code doesn't
depend on glib-2.0 or mono), add Mono.Posix.dll to Libs: line.
* lib/mono-fuse/FileSystem.cs: renamed to
src/Mono.Fuse/Mono.Fuse/FileSystem.cs
2006-08-21 Jonathan Pryor <[email protected]>
* lib/map.c, lib/map.h: Flush (current make-map output for Mono.Fuse.dll).
* lib/mono-fuse/MakeMap.Test.cs: Add additional tests for copying nested
structures.
* lib/mono-fuse/make-map.cs: Add support for copying nested structures.
* lib/mono-fuse/test.c.ref, lib/mono-fuse/test.h.ref: Flush.
2006-08-21 Jonathan Pryor <[email protected]>
* lib/mono-fuse/MakeMap.Test.cs: Add enum (to test enum conversion code),
class w/o namespace (generated NRE within make-map).
* lib/mono-fuse/make-map.cs:
- s/ExportPrefix/NativeSymbolPrefix/g (current Mono.Posix.dll naming);
- check for t.Namespace==null before looking using
Configuration.NamespaceRenames (Dictionary`2 doesn't like null keys);
- HeaderFileGenerator needs to know about member renames (so it uses the
renamed member in conversion code);
- Clean up enumeration generation for readablility.
- Remove dependency on <mono/posix/limits.h> (include macros within file
with a _cnm prefix).
* lib/mono-fuse/test.c.ref, lib/mono-fuse/test.cs.ref,
lib/mono-fuse/test.h.ref, lib/mono-fuse/test.xml.ref: Flush.
2006-08-21 Jonathan Pryor <[email protected]>
* lib/mono-fuse/make-map.cs: Remove debug statements.
2006-08-21 Jonathan Pryor <[email protected]>
* lib/mono-fuse/Makefile: Add --library when generating ../map.c, ../map.h.
* lib/mono-fuse/make-map.cs: Use Mono.Unix.Native.MapAttribute.ExportPrefix
to get the namespace of a member, in addition to --rename-namespace. This
is necessary for easier cross-assembly namespace renames -- Mono.Posix.dll
uses a Mono_Posix C namespace, but the default algorithm would be a
Mono_Unix_Native prefix. Thus, two choices for correct behavior: use
MapAttribute.ExportPrefix within Mono.Posix.dll, allowing all consumers to
get the correct prefix By Default (It Just Works), or require that all
consumers add --rename-namespace arguments (more clunky, more difficult to
diagnose, not as "version proof").
2006-08-20 Jonathan Pryor <[email protected]>
* lib/mono-fuse/make-map.cs: Add new arguments: --autoconf-member,
--exclude-native-symbol, --library, --rename-member, --rename-namespace.
These are to remove the necessity of
Mono.Unix.Native.MapAttribute.Optional (--autoconf-member) and
MapAttribute.ExportPrefix (--rename-namespace), while adding much needed
support for the DllImport libraries to generate prototypes for
(--library), symbol exclusion (to remove Mono_Posix_Stdlib_snprintf;
--exclude-native-symbol), and member renaming (curse you glibc making
st_atime a macro! See --rename-member).
* lib/mono-fuse/Makefile: Use new make-map.exe arguments to test their
behavior when building test.c/test.h.
* lib/mono-fuse/MakeMap.Test.cs: Add types/members to test new make-map.cs
arguments.
* lib/mono-fuse/test.c.ref, lib/mono-fuse/test.h.ref: Flush (new expected
2006-08-20 Jonathan Pryor <[email protected]>
* lib/map.c, lib/map.h: Flush.
* lib/mono-fuse/FileSystem.cs: Use Mono.Unix.Native.MapHeaderAttribute
instead of Mono.Unix.Native.HeaderAttribute.
2006-08-17 Jonathan Pryor <[email protected]>
* lib/mono-fuse/make-map.cs: Add a newline after the implementation macro section.
2006-08-17 Jonathan Pryor <[email protected]>
* lib/mono-fuse/MakeMap.Test.cs: Use of
MapHeaderAttribute.ImplementationMacro and
MapHeaderAttribute.ImplementationIncludeFile.
* lib/mono-fuse/make-map.cs: Add support for
MapHeaderAttribute.Implementation* properties within the .c file.
* lib/mono-fuse/test.c.ref, lib/mono-fuse/test.h.ref: Sync with current
make-map.exe output.
2006-08-16 Jonathan Pryor <[email protected]>
* lib/map.c, lib.map.h: Flush (new formatting due to make-map changes
* lib/mono-fuse/MakeMap.Test.cs: Use MapHeaderAttribute; remove
[Map("struct qux")] from Qux (can't compile this).
* lib/mono-fuse/Makefile: Improve dependencies to ensure things are rebuilt
when needed; add libtest.so target (to make sure test.c is valid C).
* lib/mono-fuse/make-map.cs: Add support for Mono.Unix.Native.MapHeaderAttribute;
formatting improvements.
* lib/mono-fuse/test.c.ref, lib/mono-fuse/test.h.ref: Flush.
2006-08-14 Jonathan Pryor <[email protected]>
API Cleanup -- return values should only be for reporting errors, not for
reporting additional information (e.g. read(2) & write(2) overload the return
value; we don't want to do that, as it's inconsistent).
* lib/map.h: Sync with mono-fuse/FileSystem.cs
* lib/mfh.c (mfh_read, mfh_write, mfh_setxattr, mfh_listxattr): Add
additional argument to get number bytes read/written from buffer.
* lib/mono-fuse/FileSystem.cs: Change ReadCb(), WriteCb(),
GetExtendedAttributesCb(), ListExtendedAttributesCb() so that return type
is Errno (consistency) and an extra `out' parameter is added to hold the
number of bytes read/written from the buffer.
* lib/mono-fuse/HelloFS.cs: Sync with latest API.
2006-08-14 Jonathan Pryor <[email protected]>
Re-enable bounds checking in struct/class conversion functions; API cleanup.
* lib/map.h: Sync with FileSystem.cs
* lib/mph.c: Add more conversion functions.
* lib/mfh.c: Fully implement all forwarding functions; remove some warnings;
fix segfault in _free_argv().
* lib/mono-fuse/FileSystem.cs: Use properties, not public fields; add
OpenReadOnly, OpenWriteOnly, OpenReadWrite helpers (to remove ugly
((OpenFlags) ((int) fi.Flags & 3)) == OpenFlags.O_RDONLY sillyness). Stat
and Statvfs are `out', not `ref'. Correct marshaling of byte[]s within
delegates, as some are `const' and some aren't (so no need to copy-in or
copy-out if not appropriate). Use mfh_fuse_ prefix instead of mfh_.
* lib/mono-fuse/HelloFS.cs: Use latest API.
2006-08-09 Jonathan Pryor <[email protected]>
* lib/mono-fuse/FileSystem.cs:
- Remove DestroyCb() delegate, OnDestroy() method. It's not needed, as
FileSystem.Dispose() cleans up opsp, and OnDestroy() was only called
from fuse_destroy(), which is also invoked from Dispose().
- Add wrappers for all protected virtual methods to act as a "backstop"
for exceptions. We cannot allow exceptions to enter native code from
managed code (as this would likely kill the process, with Mono's
exception handler "cleaning up" the native callstack, which can't make
FUSE happy). If an exception is emitted, EIO is returned to FUSE.
These methods can also be used to remove unnecessary parameters, such as
the `WriteCb' `size' parameter (which becomes buf.Length).
* lib/mono-fuse/HelloFS.cs: Add a `data' file, which contains 96MB of plain
text data (useful for timing analysis to see the overhead from
various forms of marshaling). Update to use new OnRead() parameters.
2006-08-08 Jonathan Pryor <[email protected]>
* lib/mono-fuse/FileSystem.cs: Correct FUSE argument parsing (bad regex used).
GetFuseArgs() needs to prepend the executable name for proper FUSE operation.
We're now able to start an app and pass `-d' to get FUSE debugging messages.
2006-08-08 Jonathan Pryor <[email protected]>
Flush.
2006-08-08 Jonathan Pryor <[email protected]>
Get things (somewhat) working -- we're now able to read a file contents
through FUSE, but we're not able to opendir/readdir. :-/
* lib/Makefile: Add -g, and libMonoFuseHelper.so should link to
libMonoPosixHelper.so.
* lib/map.h: Synchronize with FileSystem.cs
* lib/mfh.c: Disable some functions so that I don't need to write as many
stub functions in lib/mph.c; fix mfh_read, mfh_write (return value
nonsense; this needs to be fixed later).
* lib/mono-fuse/FileSystem.cs: Fix prototypes of ReadCb and WriteCb
delegates, as we need [MarshalAs] declarations on the byte[] arrays so
that the marshaler knows what to do with them. Update all byte[] usage
within delegates. Mono doesn't like ``[Out] out string[] paths'' (as used
in ReadDirectoryCb()), so replace with `out IntPtr paths' and manually
marshal the string[].
* lib/mono-fuse/Makefile: Use global Mono.Posix.dll file, not local copy;
* add `hellofs' target to run HelloFS.exe with LD_LIBRARY_PATH set.
* lib/mono-fuse/HelloFS.cs: Add C.WL helpers (for tracing); fix OnOpen() so
that we can read a file (it's O_RDONLY check was wrong); print out parsed
command line arguments (showing that FileSystem.Parse() is broken --
that's next to fix).
* lib/mono-fuse/make-map.cs: Don't insert types into `structs' table when a
type with [Map] is found, use RecordTypes() instead (so that we record all
nested types as well). Warnings should be prefixed with "warning: ".
Don't always generate Namespace_ToType/Namespace_FromType declarations,
but only if MapAttribute.NativeType was specified. Allows for [Map] on
structures that need to be exported from an assembly but aren't used
within shared methods.
* lib/mph.c: Let this compile.
2006-08-05 Jonathan Pryor <[email protected]>
Include all correct .o files into libMonoFuseHelper.so
Use correct return types in fuse_* methods.
2006-08-05 Jonathan Pryor <[email protected]>
* lib/mono-fuse/FileSystem.cs: Remove [Map] from Mono.Fuse.Operations, as it
cannot be assigned to `struct fuse_operations'. Add necessary DllImport's.
* lib/mono-fuse/HelloFS.cs: Fix to match new OnReadDirectory() prototype.
2006-08-05 Jonathan Pryor <[email protected]>
* lib/mfh.c: Add implementation of mfh_readdir().
2006-08-05 Jonathan Pryor <[email protected]>
* lib/mono-fuse/FileSystem.cs: Add necessary Header attribute so that map.c/map.h are
generated sanely.
2006-08-05 Jonathan Pryor <[email protected]>
Add unit test for make-map.exe, check & check-update targets to Makefile, and
expected output for unit tests.
2006-08-02 Jonathan Pryor <[email protected]>
Provide implementations for most of the mfh_* functions.
Remove backup files.
2006-08-02 Jonathan Pryor <[email protected]>
Build libMonoFuseHelper.so.
2006-08-01 Jonathan Pryor <[email protected]>
Add files for libMonoFuseHelper.so and Makefile to build libMonoFuseHelper.so.
2006-08-01 Jonathan Pryor <[email protected]>
Current Mono.Fuse managed code implementation.
2006-07-22 Jonathan Pryor <[email protected]>
Initial Import.