[LSF/MM TOPIC] VFS rename fences/zones/whatuwanacallit

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

 



Last minute proposal for fs track.
This is something that's been on my mind for a while
and I was wondering if others have interest in something like this.

The idea is to declare a directory as a root of a subtree from
which inodes cannot escape via rename/link.

The implementation could rely on lock_rename() traversing
ancestors under s_vfs_rename_mutex and not allowing to cross
a rename fence. The easiest way to enforce same restriction
for link() is to require lock_rename() for links. I am not sure if this
would cause performance issues in any real workloads?

The possible users for such a facility are:
- Overlayfs declaring lower dir as rename fence as means
  to circumvent possible attack vectors
- Shiftfs declaring mark point as rename fence  as means
  to circumvent possible attack vectors
- Basis for fsnotify subtree watch (*)

(*) I have implemented super block watch and got lots of
feedback from people waiting for this feature, but what they
really want is usually subtree watch and maybe willing to
settle for super block watch. subtree watch would also be
useful for VFS level snapshots (a.k.a overlayfs snapshots).

Project ids, implemented in xfs and ext4 already provide
a somewhat similar functionality, mainly used to maintain
quotas for subtrees, but files inside a subtrees are allowed to
change project id, so its not the exact same thing and of course
VFS has no knowledge of project ids.

There is some unused space in directory dentry taken by
the redundancy of the d_alias "list" that must contain a
single inode, that could be used to describe the VFS fences/
zones topology.

Thoughs? flames?

Thanks,
Amir.



[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