Date: Tue, 28 Nov 1995 05:30:08 +1100 From: Bruce Evans <bde@zeta.org.au> To: freebsd-hackers@freebsd.org, peter@haywire.dialix.com Subject: Re: How can I remove hard links between directories? Message-ID: <199511271830.FAA20667@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>Otherwise, we get bogons like netscape2 doing 'rename(".netscape/", >".netscape.bak");' or something bogus like that, and the namei() >lookup is or was converting ".netscape/" to mean ".netscape/." and was Lookup now converts "foo/" to "foo" if foo is a directory and fails otherwise. >pulling "." out of the .netscape directory in root's home (assuming >somebody was insane enough to run netscape as root.. :-) >or some bogon inside "rdistd" running as root, renaming the "." files >if you gave it a bogus distfile.. Renaming of "." and ".." has always been disallowed in FreeBSD. It isn't possible to create a damaged tree using rename() (modulo bugs). Renaming directories "by hand" using link() and unlink() is of course dangerous. >or things like inn's fastrm program that have to test if the euid == >0, and if so, it has to stat() every single file it's processing to >make sure it's not about to unlink a directory and running much slower >from the extra overhead.. (side note, always expire news as uid >"news" for this very reason). Why would it be much slower? unlink() is very slow if writes are synchronous. Here repeated stats of the same file take 81 usec while creat+close+unlink of the same file takes 5000 usec. Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199511271830.FAA20667>