T12641: Refactor KFileProtocol::copy

Méven Car noreply at phabricator.kde.org
Mon Feb 3 02:55:40 GMT 2020


meven created this task.
meven triaged this task as "Normal" priority.
meven added projects: Frameworks, Dolphin.

TASK DESCRIPTION
  Our man file copy function has some glaring issues that I'd like to tackle in a few steps:
  
  - Split the sendfile and read/write code path to function, to make evolution easier
  - Then Make those function io calls  (read, write, sendfile) O_NONBLOCK and use select/poll freeing user space CPU time to for instance notify the user of progressand  and reducing chances of blocking in both ways (file io blocking or socket/ksmserver blocking)
  - Then make the sendFile/write operation O_DIRECT and O_SYNC (https://linux.die.net/man/2/open), perhaps by default, or option or depending on the fs destination. Fixing https://bugs.kde.org/show_bug.cgi?id=281270 `Inconsistent notifications during/after file operations (copying, moving, deleting, compressing, extracting) depending on amount of data/items involved` (another to fix this is to mount usb sticks with the sync mount option)
  
  Then if needed :
  
  - Tune the parameters of the sendFile code path to copy data by chunks bigger than 32kB, I am thinking 128/512 to keep granular progress reporting,
  - Tune the read/write (it reads and write by chunks of 32kB at the moment
  
  Bonus steps
  
  - Add a io_uring (https://lwn.net/Articles/778411/) code path for recent linux kernels
  
  All of those steps should make the code more async, maintainable and performant, and fix a few longstanding bugs.
  
  It should help on 
   *`Ridiculously slow file copy (multiple small files)` https://bugs.kde.org/show_bug.cgi?id=342056

TASK DETAIL
  https://phabricator.kde.org/T12641

To: meven
Cc: apol, dfaure, #frameworks, #dolphin, ognarb, broulik, meven, pberestov, iasensio, fprice, LeGast00n, MrPepe, fbampaloukas, alexde, GB_2, Codezela, feverfew, michaelh, spoorun, navarromorales, firef, ngraham, andrebarros, bruns, emmanuelp, mikesomov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.kde.org/mailman/private/kfm-devel/attachments/20200203/0f67159b/attachment.htm>


More information about the kfm-devel mailing list