Re: [PATCH 03/19] VFS: use d_alloc_parallel() in lookup_one_qstr_excl() and rename it.

From: Al Viro
Date: Fri Feb 07 2025 - 15:01:17 EST


On Thu, Feb 06, 2025 at 04:42:40PM +1100, NeilBrown wrote:
> - dentry = d_alloc(base, name);
> - if (unlikely(!dentry))
> + dentry = d_alloc_parallel(base, name);
> + if (unlikely(IS_ERR_OR_NULL(dentry)))
> return ERR_PTR(-ENOMEM);

Huh? When does d_alloc_parallel() return NULL and why do you
play with explicit ERR_PTR(-ENOMEM) here?

> + if ((flags & LOOKUP_INTENT_FLAGS) == 0)

Yecchh... Thank you (from all reviewers, I suspect) for the exciting
opportunity to verify what values are possible in lookup_flags in various
callers and which are guaranteed to intersect with your LOOKUP_INTENT_FLAGS
mask.

> +#define LOOKUP_INTENT_FLAGS (LOOKUP_OPEN | LOOKUP_CREATE | LOOKUP_EXCL | \
> + LOOKUP_RENAME_TARGET)
> +

... as well as figuring out WTF do LOOKUP_OPEN and LOOKUP_EXCL fit into
that.