In samba 2.2.8a and 3.0.1rc1, smbd/vfs-wrap.c/vfswrap_rename() call rename() and evaluate errno value without checking return value of rename(). I think correct condition is "result != 0 && errno == EXDEV". -------------------------------------------------------- int vfswrap_rename(...) { int result; START_PROFILE(syscall_rename); result = rename(old, new); if (errno == EXDEV) { ^^^^^^^^^^^^^^^^^^^^^^ /* Rename across filesystems needed. */ result = copy_reg(old, new); } END_PROFILE(syscall_rename); return result; } --------------------------------------------------------
Sorry, but the 2.2 is not under development any longer. If you can reproduce this bug against the latest 3.0 release, please reopen this bug and change the version in the report. Thanks.