Using cpdup, I directly copied a pfs snapshot to a tmpfs mount:
mount -t tmpfs tmpfs /path/to/mypoint
cpdup -x -i0 /path/to/snapshot/ /path/to/mypoint/
mount -t devfs devfs /path/to/mypoint/dev
(/path/to/snapshot/dev exists, is a directory, and is empty)
The final mount will fail unless a sleep command of a second or two is put between the cpdup and mount commands, or if something accesses mymount point like ls command.
Seems that this is an issue with tmpfs, possibly with namecache according to Venkatesh.
I think the "sleep" and "ls" part is a red herring. It fails sometimes with sleep of 1, 3, and 5 seconds.
It now appears that memory is never allocated, so the cpdup command ends immediately.
Strangely it seems to work every other time, e.g.
There is definitely something funny with tmpfs here.
Okay, I figured out what was going on.
I will try to describe.
"rollback" /pfs/mypfs to a known clean configuration
What was intended:
mount /pfs/mypfs to /myworkarea
mkdir -p /myworkarea/build/01/
mount tmpfs to /myworkarea/build/01
The "known clean configuration" got contaminated and had these directories in it: "/build/01"
so the mkdir -p step was ignored and mount tmpfs presumably mounted back to /pfs/mypfs/build/01
This worked sometimes, sometimes not. about 50%.
The "fix" is to restore the known clean configuration.
However, this might still be a bug.