Re: [PATCH v2] fs: add new O_MNT flag for opening mount root from mountpoint fd

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 11/14/19 5:13 PM, Al Viro wrote:
> On Thu, Nov 14, 2019 at 12:04:54PM +0300, Pavel Tikhomirov wrote:
> 
>> More precisely the algorithm is:
>> a) openat mpfd to a new mountpoint through parent mount's root -
>> p_rootfd (which we already have) or mountpoint fd under a sibling mount
>> - s_mpfd if our mountpoint is already overmounted.
>> b) create a new mount on mpfd via /proc/<pid>/fd/<N> interface
>> c) openat it's rootfd via O_MNT from mpfd
>>
>> If we have mpfd and rootfd for each mount through /proc/<pid>/fd/<N>
>> interface we will be able to bindmount any part of each of already
>> created mounts to restore other mounts  and we will be able to configure
>> mounts, e.g. change sharing or other options even if mounts are
>> invisible from fs-root.
> 
> Everything else aside (and I'm not thrilled about the idea in general),
> you are not handling the situation when that overmount is, in turn,
> overmounted.

Sorry but I don't understand why overmounted overmount is a special 
case... Let me explain in other words. I use mathematical induction as a 
proof technique. Base of induction is when we have no mounts (exept 
root), it is obvious that we can access all directories in the system. 
Step of induction is when we add one more mount and before that step 
we've had an access to all directories in the system (have mpfds and 
rootfds for all mounts).

If step adds a mount mnt we need to only consider it's parent, siblings 
and children which will be there after the step, all other mounts does 
not change anything.

Propagations of mnt can't become mnt's children or siblings or parent, 
luckily for us. So we can actually consider one mount from propagation 
group at a time.

Now if mp is just visible from parent's p_rootfd we open mpfd. Else we 
have some sibling from which s_mpfd the mp is visible and we open mpfd 
from it. And the last case if we're crawling under some mount (child) we 
can open mpfd through c_mpfd.

Now our mpfd is open so we use O_MNT to open our rootfd. (And here we 
change c_mpfd to our rootfd as our new child switched parent)

>  Or when there's an automount set on top of it, etc.

I'm not common with automounts actually, so I might miss something here. 
Can you please show actual mount tree where this problem can happen?

> 

-- 
Best regards, Tikhomirov Pavel
Software Developer, Virtuozzo.




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux