Sorry, this is new patch, I fix a bug. The `rename` function, if trying to rename a file across filesystem or device, it's not work, and give the EXDEV erorr:     Invalid cross-device link So, I add a new function `do_move_file`: if the rename fails, copy a new file, and unlink source file.