Mauricio Faria de Oliveira:
> There's a misunderstanding here, apparently. Sorry if this wasn't
> clear, but the request wasn't for testing w/ fuse; it was for testing
> more code paths to check for no regressions. The code path that
> depended on fuse is only the path used to reproduce the problem.
I see.
That is my usual work.
> I just would like to understand, for my own education, if there's any
> technical problem or other reason for not taking this v2 patchset,
No technical matter at all.
It is something like my taste or coding style. For exmple,
Yours:
diff --git a/fs/aufs/cpup.c b/fs/aufs/cpup.c
index dbaa01a55904..2a9a76335e75 100644
--- a/fs/aufs/cpup.c
+++ b/fs/aufs/cpup.c
@@ -759,11 +759,14 @@ static int au_do_ren_after_cpup(struct au_cp_generic
*cpg, struct path *h_path)
h_path->dentry = dget(au_h_dptr(dentry, bdst));
au_set_h_dptr(dentry, bdst, h_dentry);
} else {
+ struct path h_ppath;
err = 0;
parent = dget_parent(dentry);
h_parent = au_h_dptr(parent, bdst);
dput(parent);
- h_path->dentry = vfsub_lkup_one(&dentry->d_name, h_parent);
+ h_ppath.dentry = h_parent;
+ h_ppath.mnt = au_br_mnt(au_sbr(parent->d_sb, bdst));
+ h_path->dentry = vfsub_lkup_one(&dentry->d_name, &h_ppath);
if (IS_ERR(h_path->dentry))
err = PTR_ERR(h_path->dentry);
}
Mine:
diff --git a/fs/aufs/cpup.c b/fs/aufs/cpup.c
index 8c4305c0d7cf2..7f1c4793bb194 100644
--- a/fs/aufs/cpup.c
+++ b/fs/aufs/cpup.c
@@ -732,11 +732,13 @@ static int au_do_ren_after_cpup(struct au_cp_generic
*cpg, struct path *h_path)
{
int err;
struct dentry *dentry, *h_dentry, *h_parent, *parent;
+ struct path h_ppath;
struct inode *h_dir;
aufs_bindex_t bdst;
dentry = cpg->dentry;
bdst = cpg->bdst;
+ h_ppath.mnt = au_sbr_mnt(dentry->d_sb, bdst);
h_dentry = au_h_dptr(dentry, bdst);
if (!au_ftest_cpup(cpg->flags, OVERWRITE)) {
dget(h_dentry);
@@ -748,9 +750,9 @@ static int au_do_ren_after_cpup(struct au_cp_generic *cpg,
struct path *h_path)
} else {
err = 0;
parent = dget_parent(dentry);
- h_parent = au_h_dptr(parent, bdst);
+ h_ppath.dentry = au_h_dptr(parent, bdst);
dput(parent);
- h_path->dentry = vfsub_lkup_one(&dentry->d_name, h_parent);
+ h_path->dentry = vfsub_lkup_one(&dentry->d_name, &h_ppath);
if (IS_ERR(h_path->dentry))
err = PTR_ERR(h_path->dentry);
}
The local variable 'h_parent' is replaced by 'h_ppath.dentry' and
'au_br_mnt(au_sbr())' is done by 'au_sbr_mnt()'.
Also I am hesitating combing vfsub_lookup_one_one() and ..._unlocked()
into one function, since I prefer to keep fs/aufs/vfsub.c as a
sub-version of mailine VFS.
Obviously they are not a big deal. I just want to keep the code clearer
for myself.
I guess you might want to keep the changes minimal with keeping the
original code. Honestly speaking, when I touch the code written by
someone else, I often feel similarly. But personally I don't hesitate
chaging more as long as the code gets better as some
wise-man/philosopher/sorcerer says "Don't fix the code, but fix the bug."
J. R. Okajima