[BusyBox] mv is deleting files!
Josh Malone
jmalone at applieddata.net
Thu Jul 14 12:53:02 UTC 2005
Rainer Weikusat wrote:
> Steven Scholz <steven.scholz at imc-berlin.de> writes:
>
>
>>Hi there,
>>
>>I just noticed something strange with busybux-1.00 mv command:
>>
>>~ # ls -l /opt/imc/idxcan
>>ls: /opt/imc/idxcan: No such file or directory
>>
>> [Ok. cause the file is not there yet.]
>>
>>~ # ls -l /tmp/idxcan
>>-rw-r--r-- 1 root root 1154716 Jan 1 00:43 /tmp/idxcan
>>
>> [This file will be moved to /opt/imc]
>>
>>~ # mv /tmp/idxcan /opt/imc/
>>~ # ls -l /tmp/idxcan
>>ls: /tmp/idxcan: No such file or directory
>>~ # ls -l /opt/imc/idxcan
>>-rw-r--r-- 1 root root 1154716 Jan 1 00:43 /opt/imc/idxcan
>>
>> [OK. File was moved from /tmp to /opt/imc]
>>
>>~ # mv /tmp/idxcan /opt/imc/
>>mv: /tmp/idxcan: No such file or directory
>>
>> [Fair enough. Cause the file was moved.]
>>
>>~ # ls -l /opt/imc/idxcan
>>ls: /opt/imc/idxcan: No such file or directory
>>
>> [Oops!!! The mv that failed apparently deleted the target!]
>
>
> I cannot reproduce this with 'my' busybox mv (which is some CVS/SVN
> version after 1.00, but I didn't actually touch it yet).
>
I can reproduce your test case exactly with my busybox-1.00:
adsdebian:~# ls -l /opt/imc/idxcan
ls: /opt/imc/idxcan: No such file or directory
adsdebian:~# ls -l /tmp/idxcan
-rw-r--r-- 1 root root 7 Jan 1 00:02 /tmp/idxcan
adsdebian:~# mv /tmp/idxcan /opt/imc/
adsdebian:~# ls -l /tmp/idxcan
ls: /tmp/idxcan: No such file or directory
adsdebian:~# ls -l /opt/imc/idxcan
-rw-r--r-- 1 root root 7 Jan 1 00:02 /opt/imc/idxcan
adsdebian:~# mv /tmp/idxcan /opt/imc/
mv: /tmp/idxcan: No such file or directory
adsdebian:~# ls -l /opt/imc/idxcan
ls: /opt/imc/idxcan: No such file or directory
adsdebian:~# ls -l /opt/
drwxr-xr-x 2 root root 1024 Jan 1 00:03 imc
drwxr-xr-x 3 root root 1024 Apr 28 2005 nanox
adsdebian:~# ls -l /opt/imc
adsdebian:~#
This is Busybox-1.00 on a ARM board with a ramdisk root.
However, slightly different test case doesn't reproduce the problem:
adsdebian:~# echo 'foobar3' > foo
adsdebian:~# ls -l /opt/foo
ls: /opt/foo: No such file or directory
adsdebian:~# mv foo /opt/
adsdebian:~# ls -l foo
ls: foo: No such file or directory
adsdebian:~# ls -l /opt/foo
-rw-r--r-- 1 root root 8 Jan 1 00:07 /opt/foo
adsdebian:~# mv foo /opt/
mv: unable to rename `foo': No such file or directory
adsdebian:~# ls -l /opt/foo
-rw-r--r-- 1 root root 8 Jan 1 00:07 /opt/foo
Something with 2 absolute paths? Crossing filesystems? (/tmp is a
second ramfs on my board right now)
adsdebian:~# ls -l /opt/foo
ls: /opt/foo: No such file or directory
adsdebian:~# ls -l /tmp/foo
-rw-r--r-- 1 root root 8 Jan 1 00:09 /tmp/foo
adsdebian:~# mv /tmp/foo /opt/foo
adsdebian:~# ls -l /tmp/foo
ls: /tmp/foo: No such file or directory
adsdebian:~# ls -l /opt/foo
-rw-r--r-- 1 root root 8 Jan 1 00:09 /opt/foo
adsdebian:~# mv /tmp/foo /opt/foo
mv: /tmp/foo: No such file or directory
adsdebian:~# ls -l /tmp/foo
ls: /tmp/foo: No such file or directory
adsdebian:~# ls -l /opt/foo
ls: /opt/foo: No such file or directory
adsdebian:/tmp# echo 'foobar9' > foo
adsdebian:/tmp# ls -l /opt/foo
ls: /opt/foo: No such file or directory
adsdebian:/tmp# ls -l foo
-rw-r--r-- 1 root root 8 Jan 1 00:10 foo
adsdebian:/tmp# mv foo /opt
adsdebian:/tmp# ls -l /opt/foo
-rw-r--r-- 1 root root 8 Jan 1 00:10 /opt/foo
adsdebian:/tmp# ls -l foo
ls: foo: No such file or directory
adsdebian:/tmp# mv foo /opt
mv: foo: No such file or directory
adsdebian:/tmp# ls -l /opt/foo
ls: /opt/foo: No such file or directory
adsdebian:/tmp# ls -l foo
ls: foo: No such file or directory
So - it only seems to happen to me when I cross filesystems. Sounds
like a clue. Can anybody try this under a newer busybox to see if it
has been fixed?
-Josh
--
Joshua Malone Linux Engineer
Applied Data Systems www.applieddata.net
434-244-9504 jmalone at applieddata.net
More information about the busybox
mailing list