It seems better to reuse functions (hooks) to implement various
ways the mount is done. For example, attach to the tree is used
for move, bind, and new mount; set VFS flags is usable for all
operations, etc.
Complete mount(8) is a set (chain) of hooks that is possible to mix to
get the wanted result.
The new API allow for example things like
mount --move /A /B -oro,noexec
because it's
- open_tree()
- mount_setattr()
- move_tree()
Note that the hooks allow extend it to new functionality without core
code modification (for example, X-mount.idmap= append a new hook to
call another mount_setattr()).