On Fri, Feb 28, 2020 at 12:36:09PM +0800, Ian Kent wrote: > And let's not forget that file systems are the primary > source of these and not all create them on lookups. > I may be mistaken, but I think ext4 does not while xfs > definitely does. Both ext4 and xfs bloody well *DO* create hashed negative dentries on lookups. There is a pathological case when they are trying to be case-insensitive (and in that situation we are SOL - if somebody insists upon mounting with -o make-it-suck, that's what they bloody well get). Casefondling idiocy aside, negative lookups are hashed. On all normal filesystems. Look for d_splice_alias() getting passed NULL inode - that's where ->lookup() instances normally create those.