[PATCH v2 08/10] ovl: pass the ovl_fs to ovl_do_rename_rd()

From: Josef Bacik

Date: Wed Oct 28 2026 - 21:11:49 EST


It is the only helper that modifies the upper filesystem without getting
the ovl_fs, and the next patch needs it there.

No functional change intended.

Signed-off-by: Josef Bacik <josef@xxxxxxxxxxxxxx>
---
fs/overlayfs/copy_up.c | 4 ++--
fs/overlayfs/dir.c | 10 +++++-----
fs/overlayfs/overlayfs.h | 5 +++--
fs/overlayfs/super.c | 2 +-
4 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c
index 40486d2a4b30..c1e00ceab8fb 100644
--- a/fs/overlayfs/copy_up.c
+++ b/fs/overlayfs/copy_up.c
@@ -563,7 +563,7 @@ static int ovl_create_index(struct dentry *dentry, const struct ovl_fh *fh,
if (err)
goto out;

- err = ovl_do_rename_rd(&rd);
+ err = ovl_do_rename_rd(ofs, &rd);
end_renaming(&rd);
out:
if (err)
@@ -819,7 +819,7 @@ static int ovl_copy_up_workdir(struct ovl_copy_up_ctx *c)

err = ovl_copy_up_metadata(c, temp);
if (!err)
- err = ovl_do_rename_rd(&rd);
+ err = ovl_do_rename_rd(ofs, &rd);
end_renaming(&rd);

if (err)
diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c
index fc47beffa67e..6f7a513bb5a6 100644
--- a/fs/overlayfs/dir.c
+++ b/fs/overlayfs/dir.c
@@ -141,7 +141,7 @@ int ovl_cleanup_and_whiteout(struct ovl_fs *ofs, struct dentry *dir,
rd.flags = flags;
err = start_renaming_two_dentries(&rd, whiteout, dentry);
if (!err) {
- err = ovl_do_rename_rd(&rd);
+ err = ovl_do_rename_rd(ofs, &rd);
end_renaming(&rd);
}
if (err)
@@ -449,7 +449,7 @@ static struct dentry *ovl_clear_empty(struct dentry *dentry,
if (err)
goto out_cleanup;

- err = ovl_do_rename_rd(&rd);
+ err = ovl_do_rename_rd(ofs, &rd);
end_renaming(&rd);
if (err)
goto out_cleanup_unlocked;
@@ -560,14 +560,14 @@ static int ovl_create_over_whiteout(struct dentry *dentry, struct inode *inode,
goto out_cleanup;

rd.flags = RENAME_EXCHANGE;
- err = ovl_do_rename_rd(&rd);
+ err = ovl_do_rename_rd(ofs, &rd);
end_renaming(&rd);
if (err)
goto out_cleanup_unlocked;

ovl_cleanup(ofs, workdir, upper);
} else {
- err = ovl_do_rename_rd(&rd);
+ err = ovl_do_rename_rd(ofs, &rd);
end_renaming(&rd);
if (err)
goto out_cleanup_unlocked;
@@ -1300,7 +1300,7 @@ static int ovl_rename_upper(struct ovl_renamedata *ovlrd, struct list_head *list
if (err)
goto out_unlock;

- err = ovl_do_rename_rd(&rd);
+ err = ovl_do_rename_rd(ofs, &rd);

if (!err && ovlrd->cleanup_whiteout)
whiteout = dget(rd.new_dentry);
diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h
index f884e6695d2c..83e25700c8a0 100644
--- a/fs/overlayfs/overlayfs.h
+++ b/fs/overlayfs/overlayfs.h
@@ -372,7 +372,8 @@ static inline int ovl_do_remove_acl(struct ovl_fs *ofs, struct dentry *dentry,
return vfs_remove_acl(ovl_upper_mnt_idmap(ofs), dentry, acl_name);
}

-static inline int ovl_do_rename_rd(struct renamedata *rd)
+static inline int ovl_do_rename_rd(struct ovl_fs *ofs,
+ struct renamedata *rd)
{
int err;

@@ -399,7 +400,7 @@ static inline int ovl_do_rename(struct ovl_fs *ofs, struct dentry *olddir,
.flags = flags,
};

- return ovl_do_rename_rd(&rd);
+ return ovl_do_rename_rd(ofs, &rd);
}

static inline int ovl_do_whiteout(struct ovl_fs *ofs,
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index de3e2d0b29ee..c43f8fdd6230 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -732,7 +732,7 @@ static int ovl_check_rename_whiteout(struct ovl_fs *ofs)

/* Name is inline and stable - using snapshot as a copy helper */
take_dentry_name_snapshot(&name, temp);
- err = ovl_do_rename_rd(&rd);
+ err = ovl_do_rename_rd(ofs, &rd);
end_renaming(&rd);
if (err) {
if (err == -EINVAL)

--
2.55.0