Messages in this thread | | | From | Florian Margaine <> | Subject | Re: [PATCH] fs: allow do_renameat2() over bind mounts of the same filesystem. | Date | Sat, 29 Aug 2020 23:23:34 +0200 |
| |
Al Viro <viro@zeniv.linux.org.uk> writes:
> On Fri, Aug 28, 2020 at 10:40:35PM +0200, Florian Margaine wrote: >> There's currently this seemingly unnecessary limitation that rename() >> cannot work over bind mounts of the same filesystem, > > ... is absolutely deliberate - that's how you set a boundary in the > tree, preventing both links and renames across it.
Sorry, I'm not not sure I understand what you're saying.
As I understand it, the tree is the superblock there, not the mount. As in, the dentries are relative to the superblock, and the mountpoint is no more than a pointer to a superblock's dentry.
In addition, I noticed this snippet in fs/read_write.c:
/* * FICLONE/FICLONERANGE ioctls enforce that src and dest files are on * the same mount. Practically, they only need to be on the same file * system. */ if (file_inode(file_in)->i_sb != file_inode(file_out)->i_sb) return -EXDEV;
Which seems to confirm my understanding.
What am I getting wrong there?
> > Incidentally, doing that would have fun effects for anyone with current > directory inside the subtree you'd moved - try and see. [unhandled content-type:application/pgp-signature] | |