home *** CD-ROM | disk | FTP | other *** search
- This is a log of patches made to SOS by Rich Braun Jan-Apr 1991:
-
-
- - NFSLOOKUP went into an infinite loop whenever it encountered a
- subdirectory file (fixed in files.c).
-
- Client command: ls
-
- - Attempts to create a file with a long name caused SOS to crash
- (fixed in files.c).
-
- Client command: cat >longfile.name
-
- - STATFS returned incorrect block counts. (fixed in files.c)
-
- Client command: df -v
-
- - Didn't support blocks larger than 500 bytes. (fixed in nfs.h)
-
- Client command: mount -f NFS,rsize=512,wsize=512
-
- - SETATTR did not have support for setting the size of a file; symptom
- was that rewriting a file to a shorted length left old junk
- at the end. (fixed in nfs.c, files.c)
-
- Client command: cp shortfile longfile
-
- - intopn() did a malloc for the path name, wasting processor time. Moved
- it to the caller's stack frame. Also optimized out calls to
- strcat (fixed in nfs.c, inodes.c, inodes.h)
-
- - LINK didn't return an error code readable by the client. (fixed in nfs.c)
-
- Client command: ln old new
-
- - RENAME didn't return the correct error code. (fixed in nfs.c)
-
- Client command: mv old new
-
- - MKDIR didn't return a name-too-long error if a long filename was used.
- (fixed in nfs.c, files.h, files.c)
-
- Client command: mkdir longfilename
-
- - showexps() didn't close the exports file, and in fact doesn't need
- to open it anyway. (fixed in exports.c)
-
- - nfs.c used malloc instead of local stack variables in a number of
- places. (fixed in nfs.c)
-
- - READDIR on large directories blew up due to the use of a 'short'
- variable where a 'long' was needed. (fixed in nfs.c, files.h,
- files.c)
-
- Client command: ls bigdir
-
- - READDIR sometimes returned 0 files for a directory containing files;
- problem was that 'maxbytes' was set from an unitialized
- stack variable. (fixed in nfs.c)
-
- Client command: ls
-
- - SETATTR always set the file protection even if specified as -1. This
- clobbered the read-only status. (fixed in nfs.c)
-
- - SETATTR did not set the modification time properly. (fixed in files.c)
-
- Client command: copy -m
-
- - UNLINK wouldn't delete a file if it was set RDONLY. (fixed in files.c)
-
- - READ didn't warn of a too-large request. (added fprintf in nfs.c)
-
- - Mounting of a root directory didn't work. (fixed in mountd.c, exports.c,
- inodes.c, files.c)
-
- - Moved InodeTable into far memory and increased its size. (fixed in inodes.c)
-
- - Corrected fsid logic. (fixed in inodes.c, files.c, mountd.c)
-
- - Allow writes to read-only files; authentication is done at the client
- side rather than the server. (fixed in files.c)
-
- Client command: cp rdonlyfile newfile
-
- - Rewrote intopn routine to use internal stack; freed up space in inode
- table--now 34 bytes per entry; originally 42. (fixed in inodes.c)
-
- - Eliminated lower-case requirement for the drive letter in EXPORT.US
- (fixed in inodes.c, exports.c)
-
- - Changed make files in PC/IP to squeeze the _TEXT code segment. This
- must be done in order to fit SOS into small-model.
-
- - READDIR now returns "." and "..". (fixed in inodes.c, files.c)
-
- Client command: ls
-
- - Contents of file handles now have correct parent pointer and are
- validated for certain calls. This eliminates "can't read .."
- error from pwd command.
-
- Client commands: pwd, ls
-
- - If a file or directory was created with any uppercase letters, two
- separate inode entries would be created erroneously. (fixed
- in nfs.c)
-
- - The CREATE function didn't examine the caller's UID and GID, so
- file_create() didn't have them. This caused incorrect file
- ownership on the Novell server. (fixed in nfs.c)
-
- 3/15/90 additions:
- - The READDIR function sent incorrect data if the number of
- files in a directory filled close to 1 block. Some NFS clients
- saw empty directories if they contained about 20 files.
- (fixed in nfs.c)
-
- - READDIR didn't return '.' and '..' if a directory was empty. (fixed
- in files.c)
-
- - RENAME didn't update the inode cache, creating "phantom" files.
- (fixed in files.c, nfs.c, files.h)
-
- - REMOVE failed if a file had been read recently; the "unlink" was
- attempted before closing the file. (fixed in files.c)
-
- - RMDIR returned incorrect error code if a directory was not empty, etc.
- (fixed in nfs.c)
-
- - Set the UID/GID identifiers to those of the caller, to get around some
- protection problems.
-
- 4/8/90 additions:
- - The timezone parameter was reversed from the Unix standard. TZ=EST5EDT
- now works, rather than EST-5EDT. Also added check for TZ variable,
- forcing it to be set. (fixed in dtime.c)
-
- - The server could be crashed easily by specifying a long filename in a
- NFSLOOKUP call. The routine pntoin should never be called prior
- to calling validate_path. (fixed in nfs.c, files.c)
-
- Client command: cat abcdefghijklmnopqrstuvwxyz
-
- - Improved command line parser, using getopt calls. (fixed in netd.c)
-
- - Improved main documentation file soss.1.
-
-
- 5/10/90 additions:
-
- - The NFS_WRITE call stored the wrong modification date. (fixed in files.c)
-
- - A full filesystem couldn't be mounted. (fixed in nfs.c, files.c)
-
- - Increased buffer capacity from 512 bytes to 1024 bytes. Added -b
- command line option to allow setting the blocksize. (fixed in rpc/clnt.h,
- sock.c, netd.h, netd.c, nfs.c, nfs.h)
-
- --------------------
-
- The following features have been added:
-
- - Advanced debugging macro support. (files debug.c, debug.h)
-
- - Improved inode caching (routines ingetentry, inattrset, inattrget,
- inremnode; files inodes.c, inodes.h, nfs.c, files.c)
-
- - Improved performance from general code cleanup.
-
- - Root directories may now be exported.
-
- - The EXPORTS function of mountd was not supported. (files exports.c,
- mountd.c, exports.h)
-
- Client command: showmount -e
-
- - Added partial support for Novell file access authentication. (Excepting
- directory trustees.)
-
- - Added -t command line option to allow silent truncation of long filenames.
- (files netd.c, netd.h, files.c)
- --------------------
-
- The following outstanding issues are known:
-
- - The server crashes as soon as about 7,500 nodes are created.
- - The mv command does not work on directories; this would require
- direct I/O to disk a la the Norton Utilities.
- - Inodes are not recycled as files are deleted.
- - Code is compiled small-model and is very close to the 64K limit.
- - A filename beginning with dot is unsupported, and the 'rm' command
- under AIX creates such files.
- - Daylight savings time handling requires more support than that
- provided in the Microsoft library's "tzset" function.
- --------------------
-
- Suggestions for improvements:
-
- - The code could be made to run as a TSR.
- - The code could be made to use extended memory.
- - Cache file data blocks.
- - Prevent remote user "root" from being unconditionally trusted.
- - Improve the client list parser (allow numeric IP addresses).
- - Let administrator set protections for three classes of files: directories,
- read-only files, and writable files.
- - Implement a full-blown authentication scheme (i.e. store UID/GID/mode of
- all files).
- - Add PC-NFS version 1 and/or version 2 user authentication.
- - Upgrade to NFS protocol version 3.
-