Este é um problema no kernel do Linux. Não está olhando para o verdadeiro super-bloco dos sistemas de arquivos de origem e destino:
17926 rename("d1/foo", "d2/foo") = -1 EXDEV (Invalid cross-device link)
Parece que o problema está em do_rename() ( fs/namei.c ):
error = -EXDEV;
if (oldnd.mnt != newnd.mnt)
goto exit2;
* suspiro *