Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Sep 2002 23:22:03 +1000 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Eivind Eklund <eivind@FreeBSD.org>
Cc:        Bruce Evans <bde@FreeBSD.org>, <cvs-committers@FreeBSD.org>, <cvs-all@FreeBSD.org>
Subject:   Re: cvs commit: src/sys/kern vfs_syscalls.c src/sys/gnu/ext2fs ext2_vnops.c src/sys/ufs/ufs ufs_vnops.c
Message-ID:  <20020910230114.K1753-100000@gamplex.bde.org>
In-Reply-To: <20020910124618.GC86704@phoenix.dmnstech.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 10 Sep 2002, Eivind Eklund wrote:

> On Tue, Sep 10, 2002 at 04:09:13AM -0700, Bruce Evans wrote:
> > bde         2002/09/10 04:09:13 PDT
> >
> >   Modified files:
> >     sys/kern             vfs_syscalls.c
> >     sys/gnu/ext2fs       ext2_vnops.c
> >     sys/ufs/ufs          ufs_vnops.c
> >   Log:
> >   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.
>
> This seems to be wrong semantics to me - as far as I can tell, you've just
> made the mv in the following case pass through without any change:
> 	touch a
> 	ln a b
> 	mv a b
> ... which would normally result in you just having the link 'b' to the file
> originally named 'a', but you are silently leaving 'a' and 'b'.

Yes, POSIX seems to require leaving 'a' alone here.  I used essentially this
to test recent changes.

> The POSIX interpretation would seem to prohibit the mv in
> 	mkdir d
> 	touch d/a
> 	ln -s d d2
> 	mv d2/a d/a
> from having any effect, which makes way more sense to me.  This also seems to
> be what the old code did.

Er, this case shouldn't work.  I think it didn't.  d2/a and d/a are the same
directory entry here.  Perhaps you meant:

       mkdir d d2
       touch d/a
       ln d/a d2/a2
       mv d2/a2 d/a

POSIX seems to require leaving d2/a2 alone here.

Bruce


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020910230114.K1753-100000>