Date: Sun, 22 Feb 1998 16:58:32 -0500 From: John Robert LoVerso <loverso@opengroup.org> To: afs@FreeBSD.ORG, jkh@FreeBSD.ORG Subject: NFS-to-AFS translater and 2.2.5 "mv" Message-ID: <199802222158.QAA10655@freebase.camb.opengroup.org>
next in thread | raw e-mail | index | archive | help
I still run my FreeBSD machines against the AFS/NFS translator and
have come up across a problem with FreeBSD's latest version of "mv".
I'd love to make this whole problem go away by using AFS directory and
no longer needing the translator, but...
The translator, in adapting AFS ACLs, does some wierd things. One
of them is that if you "chmod 0" a file, you lose all access to it
via the translator. I don't defend this behavior, but that is what
I'm stuck with.
This has been no problem until I installed 2.2-STABLE, dating past 2.2.5.
In an NFS mounted AFS directory, I would do:
freebase:~ 67 j$ ls -l d
ls: d: No such file or directory
freebase:~ 66 j$ mv /tmp/d .
mv: ./d: Permission denied
freebase:~ 67 j$ ls -l d
ls: d: Permission denied
On a machine with AFS, the same file would be listed as:
mule:~ 64 j$ l d
---------- 1 loverso osf 0 Feb 21 17:15 d
Seeing that, I peeked at the CVS tree for mv and found:
RELENG_2_2_5_RELEASE: 1.8.2.1
RELENG_2_2_2_RELEASE: 1.8
----------------------------
revision 1.8
date: 1996/03/01 06:14:13; author: wosch; state: Exp; lines: +0 -0
branches: 1.8.2;
delete unused label endarg
correct indent of last new code
fix usage string, option -f before option -i (alphabetic order)
----------------------------
revision 1.8.2.1
date: 1997/08/25 08:33:11; author: jkh; state: Exp; lines: +31 -13
MFC: cosmetic tweaks + error reporting mods.
Sometime between 2.2.2 and 2.2.5, "mv" was changed. The crux of the change is
in fastcopy(), when "mv" is copying regular files between different filesystems:
< if ((to_fd =
< open(to, O_CREAT | O_TRUNC | O_WRONLY, sbp->st_mode)) < 0) {
-----
> while ((to_fd =
> open(to, O_CREAT | O_EXCL | O_TRUNC | O_WRONLY, 0)) < 0) {
That is, the new file is now created with mode 0, and afterwards, it is
fchmod()'d to the correct value.
I can only imagine that this change was made to close a possible race
condition in when moving files. Note, however, that starting the new file
with a mode of 0 only happens when "mv" is in the midst of copying a file.
"cp", at least as of 2.2-980219, does NOT do this. So, if it isn't needed
for "cp", why is it needed for "mv" when copying a file?
(One possible answer is that a similar change for "cp" exists in the "current"
branch and it hasn't been pushed to "stable"; I did not check).
So, can anyone:
- tell me they've got a working AFS client side
- tell me why "mv" has been thus changed
Meanwhile, I've backed out the change in "mv" so that I can continue using
my machines on a daily basis.
John
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199802222158.QAA10655>
