cvs commit: src/tools/regression/bin/mv

Diomidis Spinellis dds at
Mon Mar 17 09:12:42 PDT 2008

Pawel Jakub Dawidek wrote:
> On Tue, Dec 18, 2007 at 02:03:55AM -0800, Alfred Perlstein wrote:
>> * Diomidis Spinellis <dds at> [071218 00:48] wrote:
>>> dds         2007-12-18 08:49:47 UTC
>>>   FreeBSD src repository
>>>   Modified files:
>>>     tools/regression/bin/mv 
>>>   Log:
>>>   Add more tests.  All rename(2)-based tests now succeed.
>>>   The performance of the cross-device equivalents is under investigation.
>> Diomidis,
>> Does 'mv' spawn off tar or something to do the copy part?
>> You can _usually_ get much better cross device performance
>> by hooking two processes together like so:
>> tar -cf - -C /path/to/source . | tar -xf - -C /path/to/dst 
>> This will keep the disks a lot busier, but this can make
>> things worse on cross device moves that happen to be
>> on the same disk.
> I was thinking about adding two options to cp(1) (-1 and -2) to give
> cp(1) a hint if the copy is done inside one disk or between separate
> disks. In -1 case cp(1) will read as large blocks as possible and then
> write them, in -2 case it will spawn two threads: one reader and one
> writer working in parallel. Performance improvements are very visible
> from what I tested.

Adding hints to cp(1) hinders portability.  Even on the same OS, if two 
systems have their disks differently configured, a script may end up 
with an inappropriate hint on one of the two.  Why not use fstat(2) to 
automatically determine if the file resides on different disks, and act 

Diomidis Spinellis -

More information about the cvs-src mailing list