vmkdir has a "-p" flag, but it does something completely different from the "-p" flag to the normal UNIX mkdir command (creating multiple levels of nested directories if needed). In fact, there's no support for this feature in vmkdir so the only way to do it under the appendable root is with "mkdir -p". That can only be done at the master repository of the closest existing enclosing directory. I believe this was a mistake that can confuse users should be corrected.
"vmkdir -p" should work like "mkdir -p". It should create as many levels of directories as needed (possibly zero).
We should change the functionality of vmkdir's existing -p flag (setting the "type" attribute of the directory to "package-parent" after creating it) to a different command-line flag, probably "-P".
Of course this could cause a slight problem for any existing scripts that use vmkdir's "-p" flag. I haven't found any evidence of that at Intel, so I don't expect this is a big problem.
The existing function ReposUI::lookupCreatePath (which is used to implement the -F flag for vcheckout and vbranch) could be used to implement some cases of "vmkdir -p". It would not work for the case where the top-level directory doesn't exist (i.e. passing "/vesta" for the "root_name" argument), but that's a bit of a special case.