]> Zhao Yanbai Git Server - minix.git/commit
Various VFS and MFS fixes to improve correctness, consistency and
authorDavid van Moolenbroek <david@minix3.org>
Mon, 18 May 2009 11:27:12 +0000 (11:27 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Mon, 18 May 2009 11:27:12 +0000 (11:27 +0000)
commitf76d75a5ecf13d22494ca3a9ed13ba09785f440b
tree66a9c5b3a82e5e945daead0f2640acdc20f10e6e
parentbdab3c4cfb0a3d55ea4e587a8b4f5c40348c1d05
Various VFS and MFS fixes to improve correctness, consistency and
POSIX compliance.

VFS changes:
* truncate() on a file system mounted read-only no longer panics MFS.
* ftruncate() and fcntl(F_FREESP) now check for write permission on
  the file descriptor instead of the file, write().
* utime(), chown() and fchown() now check for file system read-only
  status.

MFS changes:
* link() and rename() no longer return the internal EENTERMOUNT and
  ELEAVEMOUNT errors to the application as part of a check on the
  source path.
* rename() now treats EENTERMOUNT from the destination path check as
  an error, preventing file system corruption from renaming a normal
  directory to an existing mountpoint directory.
* mountpoints (mounted-on dirs) are hidden better during lookups:
  - if a lookup starts from a mountpoint, the first component has to
    be ".." (anything else being a VFS-FS protocol violation).
  - in that case, the permissions of the mountpoint are not checked.
  - in all other cases, visiting a mountpoint always results in
    EENTERMOUNT.
* a lookup on ".." from a mount root or chroot(2) root no longer
  succeeds if the caller does not have search permission on that
  directory.
* POSIX: getdents() now updates directory access times.
* POSIX: readlink() now returns partial results instead of ERANGE.

Miscellaneous changes:
* semaphore file handling bug (leading to hangs) fixed in test 32.

The VFS changes should now put the burden of checking for read-only
status of file systems entirely on VFS, and limit the access
permission checks that file systems have to perform, to checking
search permission on directories during lookups. From this point on,
any deviation from that spceification should be considered a bug.
Note that for legacy reasons, the root partition is assumed to be
mounted read-write.
servers/mfs/link.c
servers/mfs/path.c
servers/mfs/read.c
servers/vfs/link.c
servers/vfs/misc.c
servers/vfs/protect.c
servers/vfs/time.c
test/test32.c