fstest regression fixes - POSIX error codes.
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 6 May 2009 23:57:44 +0000 (16:57 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 6 May 2009 23:57:44 +0000 (16:57 -0700)
commitd7c75c7a20590cab729c3d653aaa91a4960d6165
tree2aa320088ba338d552bb1fd5ae5a353d91ed372b
parent3214ade633b2463cc9dc8c3f8d765608ee5a78a3
fstest regression fixes - POSIX error codes.

Deal with most of the issues found by FreeBSD's fstest regression test:
    * Limit path components to 255 characters.  Return ENAMETOOLONG if
      the limit is exceeded.

    * Return EEXIST, EINVAL, and ENOTEMPTY as appropriate when the user
      attempts to create, delete, or rename "." or "..", instead of EINVAL.

    * Return EISDIR if an attempt is made to open a directory for writing,
      instead of EINVAL.

    * Return EACCES if an attempt is made to open a file O_TRUNC without
      O_RDWR or O_WRONLY, instead of silently dropping the O_TRUNC.

    * Implement O_NOFOLLOW semantics generally instead of just with O_EXCL.

Not dealt with:
    * DragonFly clears SGID AND SUID on uid or gid change, if not root.
      If root is doing the operation SGID/SUID is not cleared.

    * HAMMER cannot modify the ctime without rolling a new inode, which
      is very expensive, and does not do so when entries are added or
      removed from a directory.  mtime is modified.
sys/kern/vfs_helper.c
sys/kern/vfs_nlookup.c
sys/kern/vfs_vnops.c