240 发简信
IP属地:江苏
  • static inline int do_rename(const char * oldname, const char * newname)
    {
    int error = 0;
    struct dentry * old_dir, * new_dir;
    struct dentry * old_dentry, *new_dentry;
    struct dentry * trap;
    struct nameidata oldnd, newnd;

    error = path_lookup(oldname, LOOKUP_PARENT, &oldnd);
    if (error)
    goto exit;

    error = path_lookup(newname, LOOKUP_PARENT, &newnd);
    if (error)
    goto exit1;

    error = -EXDEV;
    if (oldnd.mnt != newnd.mnt)
    goto exit2;
    ……
    }
    由rename的内核系统调用函数实现可知,是不能跨文件系统的

    linux上文件移动的坑:rename函数

    1、问题背景 开发了一个文件迁移功能,将文件从机械盘迁移到固盘,提升文件读取速度。运维测试说没有效果,我花了近3个小时才定位到原因,在linux上c编程使用的rename函数...