1 | Changes since RTEMS-NFS 1.4: |
---|
2 | LICENSE: |
---|
3 | - changed license terms; RTEMS-NFS is now released under the more liberal |
---|
4 | 'SLAC license'. |
---|
5 | NFS: |
---|
6 | - silenced compiler warnings (follow handler declaration changes in libio.h |
---|
7 | by using 'size_t' instead of 'uint32_t' etc.). |
---|
8 | |
---|
9 | Changes since RTEMS-NFS 1.3: |
---|
10 | RPCIOD: |
---|
11 | - round timeout to next system clock tick and ensure it is at least |
---|
12 | 1 tick. |
---|
13 | - cap retransmission timeout to transaction lifetime. |
---|
14 | - BUGFIX (reported by Steven Johnson, 12/5/06): we must change the XID |
---|
15 | before sending a timed-out transaction back to the requestor to prevent |
---|
16 | a late reply from being accepted. |
---|
17 | - Made task priority run-time configurable (and read from rtems_bsdnet_config |
---|
18 | by default). |
---|
19 | |
---|
20 | NFS: |
---|
21 | - added nfsGetTimeout() and nfsSetTimeout() to retrieve and modify, |
---|
22 | respectively the (global) timeout for NFS/MOUNT operations. |
---|
23 | - Minor mod. to fix 'type-punned pointer' warning (can avoid pointer cast). |
---|
24 | - Added global variable 'nfsStBlksize' (defaults to 8k) which is now |
---|
25 | used to report the file system's 'preferred' blocksize (stat(2)/st_blksize). |
---|
26 | The old behavior (server's fattr.st_blksize is passed through) can be |
---|
27 | obtained by setting nfsStBlksize=0. |
---|
28 | The new feature lets stdio use 8k buffers (only if newlib was built with |
---|
29 | HAVE_BLKSIZE defined). This enhances NFS (buffered) read performance quite |
---|
30 | a bit. Thanks to Steven Johnson <sjohnson@sakuraindustries.com> for helping |
---|
31 | with this. |
---|
32 | - Updated README (performance section). |
---|
33 | - Added simple performance test: nfsTest.c |
---|
34 | |
---|
35 | Changes since RTEMS-NFS 1.3_pre2: |
---|
36 | RPCIOD: |
---|
37 | - fix a problem with NFS server clusters (reply comes from an IP address |
---|
38 | different from the destination of the request) by relaxing paranoia checks. |
---|
39 | |
---|
40 | Changes since RTEMS-NFS 1.2: |
---|
41 | NFS: |
---|
42 | - replaced inet_aton -> inet_pton |
---|
43 | - replaced unsigned32 -> uint32_t |
---|
44 | - added _KERNEL definition for 4.7 compilation |
---|
45 | - silenced compiler warnings (4.7) |
---|
46 | - added -Wno-unused-variable in 'proto' -- rpcgen produces a lot of them. |
---|
47 | - new locking scheme. The 'in-use' counters cannot be protected by a mutex |
---|
48 | because files might be closed when a thread is deleted from a dispatch-disabled |
---|
49 | section where mutexes must not be locked. The counters are now protected by |
---|
50 | disabling interrupts. |
---|
51 | The only critical race-condition I can see ATM is while the NFS is being |
---|
52 | unmounted and the mount point is crossed by another thread. It should be the |
---|
53 | generic FS code's responsibility to handle that (but AFAIK, it doesn't) -- |
---|
54 | it's out of our scope... |
---|
55 | - ftruncate didn't work. The functionality is achieved by nfs_sattr() |
---|
56 | setting the file size to 0. However, nfs_sattr() always tried to set |
---|
57 | all attributes (re-applying the current values to fields we didn't |
---|
58 | want to change) which failed (EPERM) if we were not the owner. |
---|
59 | Now, we restrict modifications to the requested fields (in case of |
---|
60 | ftruncate this is *only* the size), adhering to rfc1094 (which states |
---|
61 | that unused fields shall be set to -1). |
---|
62 | - lseek(SEEK_END) didn't work. The underlying RTEMS filesystem code |
---|
63 | uses an internal file 'size' field to compute the offset whence SEEK_END. |
---|
64 | Instead of painfully maintaining 'size' across all system calls, we |
---|
65 | just tweak the offset for SEEK_END and leave 'size' unused. |
---|
66 | - fix: O_APPEND wasn't honoured. Note that there is no NFS 'append' call - |
---|
67 | the client simply uses the currently available idea of the file size |
---|
68 | to set the write offset. This obviously is subject to race conditions |
---|
69 | if multiple clients are writing the same file. |
---|
70 | dirutils: |
---|
71 | - replaced read/write calls by stdio; In case of copying to stdout, I |
---|
72 | experienced occasional crashes when write(fileno(stdout),...) -- according |
---|
73 | to the standard, mixing low-level i/o with stdio might produce undefined |
---|
74 | results; there we go... |
---|
75 | |
---|
76 | Changes since RTEMS-NFS 1.1: |
---|
77 | NFS: |
---|
78 | - unlink() didnt work. The underlying RTEMS filesystem code evaluates |
---|
79 | a '..' path on a non-directory node to find out the file's parent |
---|
80 | directory. Workaround to this semantically inelegant RTEMS feature |
---|
81 | was implemented. |
---|
82 | |
---|
83 | Changes since RTEMS-NFS 1.0.beta3: |
---|
84 | NFS: |
---|
85 | - fixed possible string overrun in nfsMount |
---|
86 | - nfs_read_dir() must reset the 'eofreached' flag if it skipped |
---|
87 | dirents present in the xdr but not fitting into the user buffer. |
---|
88 | - nfsMountsShow() released the wrong lock! |
---|
89 | RPCIO: |
---|
90 | - cannot delete locked binary semaphore (authlock) -- must unlock |
---|
91 | first (authlock was never deleted and hence effectively leaked) |
---|
92 | - added ASSERT paranoia around mutex primitives |
---|
93 | - Relaxed paranoia check / ASSERTion failure: |
---|
94 | paranoia_free() is called more than once on an ext_buf - it must |
---|
95 | undo calls to paranoia_refcnt() - hence the 0 == --refcnt check |
---|
96 | is too strict. |
---|
97 | - Added a DEBUG flag to introduce random packet losses for testing |
---|
98 | retransmission. |
---|
99 | xdr_mbuf: |
---|
100 | - make sure we do a signed comparison |
---|
101 | |
---|
102 | Changes since rtemsNFS-1.0.beta2: |
---|
103 | - moved 'tar' command to the 'config' area; use |
---|
104 | predefined 'make-tar' in individual Makefiles |
---|
105 | - use INSTALL_CHANGE for headers, not INSTALL_VARIANT (probably doesn't |
---|
106 | matter, though) |
---|
107 | - use LD not LD_FOR_TARGET (to get absolute path) |
---|
108 | - fixed assertion failure print format |
---|
109 | - print requestor id if send_event fails - had just experienced this :-( |
---|
110 | - hint about fprintf using FP registers is probably PPC specific |
---|
111 | - provided implementation for xdrmbuf_getlong_aligned(). i386-rtems |
---|
112 | seems to use it. |
---|