Bug 214326

Summary: unionfs+nullfs strange behaviour
Product: Base System Reporter: root
Component: kernAssignee: freebsd-fs (Nobody) <fs>
Status: New ---    
Severity: Affects Only Me CC: swills
Priority: --- Keywords: patch
Version: 10.3-RELEASE   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
An experimental patch for unionfs internal cache(Nov 8, 2016) none

Description root 2016-11-08 14:33:21 UTC
Created attachment 176786 [details]
An experimental patch for unionfs internal cache(Nov 8, 2016)

** This report may be related to, or duplicate of Bug #186360 **

With unionfs+nullfs, I saw a strange behaviour.

# mkdir mountfrom1 mountfrom2 mountto
# mkdir mountfrom1/a
# touch mountfrom2/b
# mount -t unionfs mountfrom1 mountto
# mount -t nullfs mountfrom2 mountto/a
# ls mountto/a/b
ls: mountto/a/b: No such file or directory
# ls mountto/a
b
# ls mountto/a/b
mountto/a/b

I digged into unionfs module, and found 'unionfs_lookup' is returning different vnode for same single object 'a', for mount and later "ls" command.
It is caused by a bug in unionfs's internal cache (I think), and I solved it with an attached patch.

Well, my patch omits a check for 'ISLASTCN', but I don't know why the check is needed.