-
Bug
-
Resolution: Fixed
-
P2: Important
-
6.10.0
-
None
-
-
c63b68dab (dev), a60364183 (6.10)
https://bbs.archlinux.org/viewtopic.php?pid=2268636#p2268636
The gist is akonadi failing to copy an old error log on a somewhat exotic ecryptfs+xfs w/ a qt6-base update 6.9 to 6.10 (still works w/ ext4, not clear whether ecryptfs or xfs or the combination is the problem)
strace shows that QFileSystemEngine::cloneFile used to fail FICLONE with ENOSUPP, then sendfile w/ EINVAL and then the file gets manually read/written into a qt_temp.HqmGfm tmpfile and the inode linked to Akonadi.error.old
Now FICLONE is still ENOSUPP, then ::copy_file_range fails w/ EINVAL what in https://github.com/qt/qtbase/blob/58faca4e07011510388df94ddea2f95b56750bae/src/corelib/io/qfilesystemengine_unix.cpp#L1201 returns TriStateResult::Failed but from the below comment at https://github.com/qt/qtbase/blob/58faca4e07011510388df94ddea2f95b56750bae/src/corelib/io/qfilesystemengine_unix.cpp#L1217 this should probably be TriStateResult::NotSupported to resort to the upper layer copy as it probably used to w/ the previous ::sendfile failure (or even try sendfile first?)