Re: [PATCH 13/14] d_path: prepend_path() is unlikely to return non-zero

From: Al Viro
Date: Fri Jun 25 2021 - 14:00:24 EST


On Fri, Jun 25, 2021 at 08:00:49AM +0000, Justin He wrote:
> --- a/fs/d_path.c
> +++ b/fs/d_path.c
> @@ -210,6 +210,7 @@ static int prepend_path(const struct path *path,
> b = *p;
> read_seqbegin_or_lock(&rename_lock, &seq);
> error = __prepend_path(path->dentry, real_mount(path->mnt), root, &b);
> + printk("prepend=%d",error);
> if (!(seq & 1))
> rcu_read_unlock();
> if (need_seqretry(&rename_lock, seq)) {
>
> Then the result seems a little different:
> root@entos-ampere-02:~# dmesg |grep prepend=1 |wc -l
> 7417
> root@entos-ampere-02:~# dmesg |grep prepend=0 |wc -l
> 772
>
> The kernel is 5.13.0-rc2+ + this series + my '%pD' series
>
> Any thoughts?

On which loads? 1 here is "mount/dentry pair is in somebody
else's namespace or outside of the subtree we are chrooted
into". IOW, what's calling d_path() on your setup?