# Re: \[PATCH 30/32\] vfs: Allow cloning of a mount tree with open(O\_PATH\|O\_CLONE\_MOUNT) \[ver \#8\]

- From: Al Viro \<viro@ZenIV.linux.org.uk\>
- Date: 2018-06-02 03:09:27 
- List: linux-api
- Page: https://ratatoskr.run/linux-api/2018/06/139297
- Thread: https://ratatoskr.run/linux-fsdevel/2018/05/135893/t.md

```text
On Fri, Jun 01, 2018 at 09:27:43AM +0100, David Howells wrote:
> Al Viro [ref] wrote:
> 
> > > Instead of overloading this on open having a specific syscalls just
> > > seems like a much saner idea.
> > 
> > It's not just mount API; these can be used independently of that.
> > Think of the uses where you pass those to ...at() and you'll see
> > a bunch of applications of that thing.
> 
> I kind of agree with Christoph on this point.  Yes, you can use the resultant
> fd for other things, but that doesn't mean it has to be obtained initially
> through open() or openat() rather than, say, a new pick_mount() syscall.
> 
> Further, having more parameters available gives us the opportunity to change
> the settings on any mounts we create at the point of creation.

open_subtree(int dirfd, const char *pathname, int flags), then?  How would
flags be interpreted?  What I see mapping at that thing is
	* equivalent of O_PATH open
	* clone subtree, O_PATH open root
	* clone one mount, O_PATH open root
and apparently you want to add (orthogonal to that)
	* make shared/slave/private/unbindable
	* ditto with recursion?
	* same for nodev/nosuid/noexec/noatime/nodiratime/relatime/ro/?
as well as usual AT_... flags (empty path, follow)

Choose the encoding...
```
