This iteration improves error handling for copy_file_range, particularly around undocumented error codes in earlier kernel versions. Additionally this fixes the userspace copy fallback to handle zero-length files such as in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108178. Lastly, the case "src gets resized during the copy loop" is now considered and will return true once the loop hits EOF (this is the only situation, aside from a zero-length src, where sendfile and copy_file_range return 0). Best Jannik