cvs commit: src/bin/mv mv.c

Diomidis Spinellis dds at aueb.gr
Sun Dec 16 10:23:55 PST 2007


Alexander Kabaev wrote:
> On Sun, 16 Dec 2007 14:14:31 +0000 (UTC)
> Diomidis Spinellis <dds at FreeBSD.org> wrote:
> 
>> dds         2007-12-16 14:14:31 UTC
>>
>>   FreeBSD src repository
>>
>>   Modified files:
>>     bin/mv               mv.c 
>>   Log:
>>   When moving a directory across devices to a place where a directory
>>   with the same name exists, delete that directory first, before
>> performing the copy.  This ensures that mv(1) across devices follows
>> the semantics of rename(2), as required by POSIX.
>>   
>>   This change could introduce the potential of data loss, even if the
>>   copy fails, violating the atomicity properties of rename(2).  This
>> is (mostly) mitigated by first renaming the destination and
>> obliterating it only after a succesfull copy.
>>   
>>   The above logic also led to the introduction of code that will
>> cleanup the results of a partial copy, if a cross-device copy fails.
>>   
>>   PR:             bin/118367
>>   MFC after:      1 month
>>   
>>   Revision  Changes    Path
>>   1.47      +83 -23    src/bin/mv/mv.c
>>
>> http://cvsweb.FreeBSD.org/src/bin/mv/mv.c.diff?r1=1.46&r2=1.47
> 
> This breaks make buildworld on amd64 at least:
> 
> 
> /usr/src/bin/mv/mv.c: In function 'copy': /usr/src/bin/mv/mv.c:361:
> warning: variable 'rval' might be clobbered by 'longjmp' or 'vfork'
> /usr/src/bin/mv/mv.c:361: warning:variable 'i' might be clobbered by
> 'longjmp' or 'vfork'
> 

Thanks - sorry - I fixed it in 1.48.

-- 
Diomidis Spinellis


More information about the cvs-src mailing list