Re: [non] 2aa3847085: will-it-scale.per_process_ops -32.0% regression

From: Al Viro
Date: Sun Apr 05 2020 - 22:04:56 EST


On Mon, Apr 06, 2020 at 09:25:39AM +0800, kernel test robot wrote:
> Greeting,
>
> FYI, we noticed a -32.0% regression of will-it-scale.per_process_ops due to commit:
>
>
> commit: 2aa38470853a65dc9b1b4bd0989d34cd3fc57ebd ("non-RCU analogue of the previous commit")
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git master

Arrgghh... Could you check if vfs.git#fixes recovers that? FWIW, proposed fix
is this:

commit d98d78cd6ac9eb5ed0506140cc43432d7c7dd480
Author: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
Date: Sun Apr 5 21:59:55 2020 -0400

fix braino in legitimize_path()

brown paperbag time... wrong order of arguments ended up confusing
the values to check dentry and mount_lock seqcounts against.

Reported-by: kernel test robot <rong.a.chen@xxxxxxxxx>
Fixes: 2aa38470853a ("non-RCU analogue of the previous commit")
Signed-off-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx>

diff --git a/fs/namei.c b/fs/namei.c
index 61fdb77a7d58..a320371899cf 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -610,7 +610,7 @@ static bool __legitimize_path(struct path *path, unsigned seq, unsigned mseq)
static inline bool legitimize_path(struct nameidata *nd,
struct path *path, unsigned seq)
{
- return __legitimize_path(path, nd->m_seq, seq);
+ return __legitimize_path(path, seq, nd->m_seq);
}

static bool legitimize_links(struct nameidata *nd)