]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
vfs_syscalls.c:
authorBruce Evans <bde@FreeBSD.org>
Tue, 10 Sep 2002 11:09:13 +0000 (11:09 +0000)
committerBruce Evans <bde@FreeBSD.org>
Tue, 10 Sep 2002 11:09:13 +0000 (11:09 +0000)
commitd3a7b5e70e4f8338bc2b3556df238e6ffb79a2ae
treefbf60a21a76d1e310c894136153d8d3364de0a27
parent3e30ca7b1cc48afdaf4fd24adeebe08eaff8a47c
vfs_syscalls.c:
Changed rename(2) to follow the letter of the POSIX spec.  POSIX
requires rename() to have no effect if its args "resolve to the same
existing file".  I think "file" can only reasonably be read as referring
to the inode, although the rationale and "resolve" seem to say that
sameness is at the level of (resolved) directory entries.

ext2fs_vnops.c, ufs_vnops.c:
Replaced code that gave the historical BSD behaviour of removing one
link name by checks that this code is now unreachable.  This fixes
some races.  All vnodes needed to be unlocked for the removal, and
locking at another level using something like IN_RENAME was not even
attempted, so it was possible for rename(x, y) to return with both x
and y removed even without any unlink(2) syscalls (one process can
remove x using rename(x, y) and another process can remove y using
rename(y, x)).

Prodded by: alfred
MFC after: 8 weeks
PR: 42617
sys/gnu/ext2fs/ext2_vnops.c
sys/gnu/fs/ext2fs/ext2_vnops.c
sys/kern/vfs_extattr.c
sys/kern/vfs_syscalls.c
sys/ufs/ufs/ufs_vnops.c