On Wed, Jul 28, 2021 at 01:32:45PM +1000, NeilBrown wrote: > On Wed, 28 Jul 2021, Al Viro wrote: > > On Wed, Jul 28, 2021 at 08:37:45AM +1000, NeilBrown wrote: > > > This patch introduces the concept of an "internal" mount which is a > > > mount where a filesystem has create the mount itself. > > > > > > Both the mounted-on-dentry and the mount's root dentry must refer to the > > > same superblock (they may be the same dentry), and the mounted-on dentry > > > must be an automount. > > > > And what happens if you mount --move it? > > > > > If you move the mount, then the mounted-on dentry would not longer be an > automount (.... I assume???...) so it would not longer be > mount_is_internal(). > > I think that is reasonable. Whoever moved the mount has now taken over > responsibility for it - it no longer is controlled by the filesystem. > The moving will have removed the mount from the list of auto-expire > mounts, and the mount-trap will now be exposed and can be mounted-on > again. > > It would be just like unmounting the automount, and bind-mounting the > same dentry elsewhere. Once more, with feeling: what happens to your function if it gets called during mount --move? What locking environment is going to be provided for it? And what is going to provide said environment?