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