Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Nov 2018 01:23:12 +0100
From:      Markus Hoenicka <markus.hoenicka@mhoenicka.de>
To:        freebsd-questions@freebsd.org
Subject:   ROX-Filer: overwriting a file on an USB drive truncates it
Message-ID:  <4ee20fc51b13465edcec6d8456be7cf0@mhoenicka.de>

Next in thread | Raw E-Mail | Index | Archive | Help
Hi,

I've recently upgraded my laptop to:

FreeBSD wombat 11.2-RELEASE-p4 FreeBSD 11.2-RELEASE-p4 #0: Thu Sep 27 
08:16:24 UTC 2018     
root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

I've also updated all installed packages.

I keep running into a nasty file copying bug that does not seem to have 
occurred previously. Result is that overwriting an existing file on an 
USB drive causes this file to be truncated instead of being overwritten, 
which means data loss.

How to reproduce:

After logging in, I start an Xfce session manually:

startxfce4 --with-ck-launch

mount stick in an xterm, as per handbook. Note that I've set up user 
mounting of USB drives:

mount -t msdosfs -o -m=644,-M=755 /dev/da0s1 /stick/markus

open source directory (on hard drive) in a ROX-Filer window
open target directory (on usb drive) in another ROX-Filer window

drag&drop a file from source over an existing copy on target

dialog box asks if it is ok to overwrite which I acknowledge

ROX-Filer window shows the correct file size immediately after copying, 
and after rescanning the directory. ls -al /stick/markus/targetdir also 
shows the correct file size at this point.

umount /stick/markus fails because the device is busy. fstat shows that 
the ROX-Filer process keeps it busy

now I can either use umount -f /stick/markus to forcibly unmount the 
stick, or I log out of the X session and then use umount /stick/markus 
without problems

then mount the stick again as above, or try on a different computer

ls -al /stick/markus/targetdir shows a target file size of zero.

It appears that the new data are never flushed to the disk. I've even 
tried to run umount /stick/markus before umount -f /stick/markus, as 
this should perform a flush according to the umount man page. This bug 
appears to be specific to ROX-Filer. I could not reproduce this using 
Thunar, or plain ol' cp. This bug also appears to be specific to USB 
target drives, as I cannot reproduce this when overwriting files on the 
hard drive. I do not think the problem is related to a faulty file 
system on the target drive as I can reproduce this with just about any 
thumbdrive and external disk lying around.

I've been using ROX-Filer for ages, but I've noticed that neither 
mailing lists nor bug tracker seem to be active. Is it about time to 
move on?

thanks
Markus

-- 
Markus Hoenicka
http://www.mhoenicka.de
AQ score 38




Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?4ee20fc51b13465edcec6d8456be7cf0>