Files on different filesystems/mount points aren't related to legacy systems.  It's quite common to have distinct /home and/or /tmp be different mount points than / in Linux.

libuv's rename may handle everything up to the actual rename() call in vim_rename, which is still a net reduction in complexity, but we still need to handle the error case.