Both are identical except for IMustLock() and lookup_one_len[_unlocked](). Deduplicate them w/ an internal function. No functional changes intended.
Signed-off-by: Mauricio Faria de Oliveira <m...@canonical.com> --- fs/aufs/vfsub.c | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/fs/aufs/vfsub.c b/fs/aufs/vfsub.c index f07554901ec0..77682fba944f 100644 --- a/fs/aufs/vfsub.c +++ b/fs/aufs/vfsub.c @@ -165,14 +165,21 @@ int vfsub_kern_path(const char *name, unsigned int flags, struct path *path) return err; } -struct dentry *vfsub_lookup_one_len_unlocked(const char *name, - struct dentry *parent, int len) +struct dentry *__vfsub_lookup_one_len(const char *name, struct dentry *parent, + int len, bool locked) { struct path path = { .mnt = NULL }; - path.dentry = lookup_one_len_unlocked(name, parent, len); + if (locked) { + /* VFS checks it too, but by WARN_ON_ONCE() */ + IMustLock(d_inode(parent)); + path.dentry = lookup_one_len(name, parent, len); + } else { + path.dentry = lookup_one_len_unlocked(name, parent, len); + } + if (IS_ERR(path.dentry)) goto out; if (d_is_positive(path.dentry)) @@ -183,25 +190,16 @@ out: return path.dentry; } +struct dentry *vfsub_lookup_one_len_unlocked(const char *name, + struct dentry *parent, int len) +{ + return __vfsub_lookup_one_len(name, parent, len, false); +} + struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent, int len) { - struct path path = { - .mnt = NULL - }; - - /* VFS checks it too, but by WARN_ON_ONCE() */ - IMustLock(d_inode(parent)); - - path.dentry = lookup_one_len(name, parent, len); - if (IS_ERR(path.dentry)) - goto out; - if (d_is_positive(path.dentry)) - vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/ - -out: - AuTraceErrPtr(path.dentry); - return path.dentry; + return __vfsub_lookup_one_len(name, parent, len, true); } void vfsub_call_lkup_one(void *args) -- 2.30.2