----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://git.reviewboard.kde.org/r/130084/#review103048 -----------------------------------------------------------
But doesn't this make copying much slower in the normal case? (copying onto a non-removable harddisk partition). It sounds to me like this should be 1) done internally in kio_file (no Job API for this) 2) only when the destination is a removable device - David Faure On April 15, 2017, 8:28 a.m., KJ Tsanaktsidis wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://git.reviewboard.kde.org/r/130084/ > ----------------------------------------------------------- > > (Updated April 15, 2017, 8:28 a.m.) > > > Review request for KDE Frameworks, Oswald Buddenhagen and Thiago Macieira. > > > Repository: kio > > > Description > ------- > > When copying a large-ish file (~1-2GB) from very fast storage to very slow > storage (e.g. an NVME SSD to a cheap USB flash drive) on a machine with lots > of RAM, Dolphin displays a progress bar which finishes in a fraction of a > second (i.e. as fast as it takes to read the source file into the Linux page > cache). Unmounting the drive then of course takes a long time, with only an > indeterminate spinner. > > This patch adds an option to force fsync during copy jobs, so that the copy > progress bar measures how long it will take to actually copy the file to the > destination. > > I've added two flags - Fsync and FsyncCrossFilesystem - to the JobEnum flag. > The former will cause all copy operations to fsync during the copy loop, > whilst the latter will only fsync copies that are across different > filesystems. > > If this patch gets OK'd, I have another patch which adds support for this > into the appropriate places in Dolphin. I would think that at least > FsyncCrossFilesystem should be the default, but Fsync always might be a > little heavy handed. At the least fsync'ing cross-filesystem copies ensures > that the unmount won't take forever. > > > Diffs > ----- > > src/core/copyjob.cpp 7c02cb50d7e9c11bbcd9264832357f3fd6dc8c16 > src/core/filecopyjob.cpp 301b7039158b7dc537b9004c14845b3d1d60f8eb > src/core/job_base.h 0be9629f42277afc5f72d00d0cae5c9c1cd2b8bc > src/core/slavebase.cpp 3778df813b8568657a2cbd9412c1244f94696a0c > src/ioslaves/file/file_unix.cpp 3c1b9927e3dd2d0134f77caec6e6b24a0356d26f > > Diff: https://git.reviewboard.kde.org/r/130084/diff/ > > > Testing > ------- > > Tested the patch with KDE/Dolphin on Arch Linux, which is version 5.32.0. The > diff applies cleanly to master so I assume there shouldn't be any issues > there, but I've not actually checked that. As advertised, copying a file to > USB flash storage now displays an accurate progress bar. > > I experimented with how often fsync should be called on my hardware, and I > found calling it every ~1M copied caused no decrease in copy performance > whilst still providing accurate progress info. That is the setting I've gone > with in this patch. I'm open to suggestions on how this could be tuned better > though. > > > Thanks, > > KJ Tsanaktsidis > >