static int ovl_set_redirect(struct dentry *dentry, bool samedir);
-int ovl_cleanup(struct ovl_fs *ofs, struct inode *wdir, struct dentry *wdentry)
+static int ovl_cleanup_locked(struct ovl_fs *ofs, struct inode *wdir,
+ struct dentry *wdentry)
{
int err;
return err;
}
-int ovl_cleanup_unlocked(struct ovl_fs *ofs, struct dentry *workdir,
- struct dentry *wdentry)
+int ovl_cleanup(struct ovl_fs *ofs, struct dentry *workdir,
+ struct dentry *wdentry)
{
int err;
if (err)
return err;
- ovl_cleanup(ofs, workdir->d_inode, wdentry);
+ ovl_cleanup_locked(ofs, workdir->d_inode, wdentry);
ovl_parent_unlock(workdir);
return 0;
if (err)
goto kill_whiteout;
if (flags)
- ovl_cleanup_unlocked(ofs, ofs->workdir, dentry);
+ ovl_cleanup(ofs, ofs->workdir, dentry);
out:
dput(whiteout);
return err;
kill_whiteout:
- ovl_cleanup_unlocked(ofs, ofs->workdir, whiteout);
+ ovl_cleanup(ofs, ofs->workdir, whiteout);
goto out;
}
return 0;
out_cleanup:
- ovl_cleanup_unlocked(ofs, upperdir, newdentry);
+ ovl_cleanup(ofs, upperdir, newdentry);
dput(newdentry);
return err;
}
goto out_cleanup_unlocked;
ovl_cleanup_whiteouts(ofs, upper, list);
- ovl_cleanup_unlocked(ofs, workdir, upper);
+ ovl_cleanup(ofs, workdir, upper);
/* dentry's upper doesn't match now, get rid of it */
d_drop(dentry);
out_cleanup:
unlock_rename(workdir, upperdir);
out_cleanup_unlocked:
- ovl_cleanup_unlocked(ofs, workdir, opaquedir);
+ ovl_cleanup(ofs, workdir, opaquedir);
dput(opaquedir);
out:
return ERR_PTR(err);
if (err)
goto out_cleanup_unlocked;
- ovl_cleanup_unlocked(ofs, workdir, upper);
+ ovl_cleanup(ofs, workdir, upper);
} else {
err = ovl_do_rename(ofs, workdir, newdentry, upperdir, upper, 0);
unlock_rename(workdir, upperdir);
ovl_dir_modified(dentry->d_parent, false);
err = ovl_instantiate(dentry, inode, newdentry, hardlink, NULL);
if (err) {
- ovl_cleanup_unlocked(ofs, upperdir, newdentry);
+ ovl_cleanup(ofs, upperdir, newdentry);
dput(newdentry);
}
out_dput:
out_cleanup:
unlock_rename(workdir, upperdir);
out_cleanup_unlocked:
- ovl_cleanup_unlocked(ofs, workdir, newdentry);
+ ovl_cleanup(ofs, workdir, newdentry);
dput(newdentry);
goto out_dput;
}
goto out_revert_creds;
if (cleanup_whiteout)
- ovl_cleanup_unlocked(ofs, old_upperdir, newdentry);
+ ovl_cleanup(ofs, old_upperdir, newdentry);
if (overwrite && d_inode(new)) {
if (new_is_dir)
struct dentry *ovl_create_real(struct ovl_fs *ofs,
struct dentry *parent, struct dentry *newdentry,
struct ovl_cattr *attr);
-int ovl_cleanup(struct ovl_fs *ofs, struct inode *dir, struct dentry *dentry);
-int ovl_cleanup_unlocked(struct ovl_fs *ofs, struct dentry *workdir, struct dentry *dentry);
+int ovl_cleanup(struct ovl_fs *ofs, struct dentry *workdir, struct dentry *dentry);
struct dentry *ovl_lookup_temp(struct ovl_fs *ofs, struct dentry *workdir);
struct dentry *ovl_create_temp(struct ovl_fs *ofs, struct dentry *workdir,
struct ovl_cattr *attr);
continue;
}
if (dentry->d_inode)
- ovl_cleanup_unlocked(ofs, upper, dentry);
+ ovl_cleanup(ofs, upper, dentry);
dput(dentry);
}
}
int err;
if (!d_is_dir(dentry) || level > 1)
- return ovl_cleanup_unlocked(ofs, parent, dentry);
+ return ovl_cleanup(ofs, parent, dentry);
err = ovl_parent_lock(parent, dentry);
if (err)
err = ovl_workdir_cleanup_recurse(ofs, &path, level + 1);
if (!err)
- err = ovl_cleanup_unlocked(ofs, parent, dentry);
+ err = ovl_cleanup(ofs, parent, dentry);
}
return err;
goto next;
} else if (err == -ESTALE) {
/* Cleanup stale index entries */
- err = ovl_cleanup_unlocked(ofs, indexdir, index);
+ err = ovl_cleanup(ofs, indexdir, index);
} else if (err != -ENOENT) {
/*
* Abort mount to avoid corrupting the index if
err = ovl_cleanup_and_whiteout(ofs, indexdir, index);
} else {
/* Cleanup orphan index entries */
- err = ovl_cleanup_unlocked(ofs, indexdir, index);
+ err = ovl_cleanup(ofs, indexdir, index);
}
if (err)