summaryrefslogtreecommitdiff
path: root/rtemsNfs/ChangeLog
blob: b859d011464ef88f2d7ee9ca458076506c004570 (plain)
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
2006-08-30	Joel Sherrill <joel@OARcorp.com>

	* src/rpcio.c: Remove printf format warnings.

Changes since RTEMS-NFS 1.3_pre2:
 RPCIOD:
 - fix a problem with NFS server clusters (reply comes from an IP address
   different from the destination of the request) by relaxing paranoia checks.

Changes since RTEMS-NFS 1.2:
 NFS:
 - replaced inet_aton -> inet_pton
 - replaced unsigned32 -> uint32_t
 - added _KERNEL definition for 4.7 compilation
 - silenced compiler warnings (4.7)
 - added -Wno-unused-variable in 'proto' -- rpcgen produces a lot of them.
 - new locking scheme. The 'in-use' counters cannot be protected by a mutex
   because files might be closed when a thread is deleted from a dispatch-disabled
   section where mutexes must not be locked. The counters are now protected by
   disabling interrupts.
   The only critical race-condition I can see ATM is while the NFS is being
   unmounted and the mount point is crossed by another thread. It should be the
   generic FS code's responsibility to handle that (but AFAIK, it doesn't) --
   it's out of our scope...
 - ftruncate didn't work. The functionality is achieved by nfs_sattr()
   setting the file size to 0. However, nfs_sattr() always tried to set
   all attributes (re-applying the current values to fields we didn't
   want to change) which failed (EPERM) if we were not the owner.
   Now, we restrict modifications to the requested fields (in case of
   ftruncate this is *only* the size), adhering to rfc1094 (which states
   that unused fields shall be set to -1).
 - lseek(SEEK_END) didn't work. The underlying RTEMS filesystem code
   uses an internal file 'size' field to compute the offset whence SEEK_END.
   Instead of painfully maintaining 'size' across all system calls, we
   just tweak the offset for SEEK_END and leave 'size' unused.
 - fix: O_APPEND wasn't honoured. Note that there is no NFS 'append' call - 
   the client simply uses the currently available idea of the file size
   to set the write offset. This obviously is subject to race conditions
   if multiple clients are writing the same file.
 dirutils:
 - replaced read/write calls by stdio; In case of copying to stdout, I
   experienced occasional crashes when write(fileno(stdout),...) -- according
   to the standard, mixing low-level i/o with stdio might produce undefined
   results; there we go...

Changes since RTEMS-NFS 1.1:
 NFS:
 - unlink() didnt work. The underlying RTEMS filesystem code evaluates
   a '..' path on a non-directory node to find out the file's parent
   directory. Workaround to this semantically inelegant RTEMS feature
   was implemented.
  
Changes since RTEMS-NFS 1.0.beta3:
 NFS:
 - fixed possible string overrun in nfsMount
 - nfs_read_dir() must reset the 'eofreached' flag if it skipped
   dirents present in the xdr but not fitting into the user buffer.
 - nfsMountsShow() released the wrong lock!
 RPCIO:
 - cannot delete locked binary semaphore (authlock) -- must unlock
   first (authlock was never deleted and hence effectively leaked)
 - added ASSERT paranoia around mutex primitives
 - Relaxed paranoia check / ASSERTion failure:
   paranoia_free() is called more than once on an ext_buf - it must
   undo calls to paranoia_refcnt() - hence the 0 == --refcnt check
   is too strict.
 - Added a DEBUG flag to introduce random packet losses for testing
   retransmission.
 xdr_mbuf:
 - make sure we do a signed comparison

Changes since rtemsNFS-1.0.beta2:
 - moved 'tar' command to the 'config' area; use
   predefined 'make-tar' in individual Makefiles
 - use INSTALL_CHANGE for headers, not INSTALL_VARIANT (probably doesn't
   matter, though)
 - use LD not LD_FOR_TARGET (to get absolute path)
 - fixed assertion failure print format
 - print requestor id if send_event fails - had just experienced this :-(
 - hint about fprintf using FP registers is probably PPC specific
 - provided implementation for xdrmbuf_getlong_aligned(). i386-rtems
   seems to use it.