Hello,

        touch /tmp/foo;
        mount /tmp /mnt --bind;
        strace -e rename mv /tmp/foo /mnt/bar

Ideally, I would expect, that since /tmp and /mnt are the same 
filesystem, that the move operation would complete without _copying_ the 
file. But strace returns

        rename("/tmp/foo", "/mnt/bar") = -1 EXDEV (Invalid cross-device link)

The piece of code identified is fs/namei.c:2578:do_rename()

        error = -EXDEV;
        if (oldnd.mnt != newnd.mnt)
                goto exit2;

Why is EXDEV returned when _vfs mountpoints_ are crossed? Should not it 
be more like the following?

        error = -EXDEV;
        if (oldnd.mnt->mnt_sb != newnd.mnt->mnt_sb)
                goto exit2;




Jan
-- 
-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to