Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Dec 1997 02:18:12 +1100
From:      Bruce Evans <bde@zeta.org.au>
To:        bde@zeta.org.au, eivind@yes.no
Cc:        cvs-all@FreeBSD.ORG, cvs-bin@FreeBSD.ORG, cvs-committers@FreeBSD.ORG, eivind@FreeBSD.ORG
Subject:   Re: cvs commit: src/bin/mv mv.c
Message-ID:  <199712111518.CAA13945@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>> This seems to break POSIX conformance.  According to a POSIX.2 draft,
>> mv(1) shall attempt to move the entire subtree if rename(2) returns
>> EXDEV, and according to POSIX.1-1990, rename(2) shall return EXDEV for
>> cross-device moves (unless certain other error conditions not related
>> to cross-device moves occur).
>
>Does this mean I should revert it?

I'm not sure.  It could be implemented better (leave the !EXDEV code
alone and don't call statfs() for mv'ing regular files ...).

>good change.  However, if we are compliant in most other cases, I'll let
>that pass for the chance of getting that nice little stamp ;-)

>> Moving entire subtrees is probably wrong in all cases.  Subtrees may be
>> huge, and they may contain mount points even if the root is not a mount
>> point.
>
>... or does this mean that the patch should be extended to make mv even more
>restrictive?

I wonder if the versions of Linux with POSIX (.1 only?) stamps changed
mv to move whole trees across file systems.  Gnu mv still doesn't do it
in fileutils-3.16.  Doing it is more of a problem in FreeBSD since we
have lots of user-mountable file systems.

Bruce



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