-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
6.10.0
-
None
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?)
For Gerrit Dashboard: QTBUG-141371 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
685572,1 | QFileSystemEngine/Unix: work around copy_file_range() returning EINVAL | dev | qt/qtbase | Status: NEW | 0 | 0 |