Re: User-visible context-mount API
From: David Howells <hidden>
Date: 2018-01-16 15:40:33
Also in:
linux-fsdevel
Miklos Szeredi [off-list ref] wrote:
quoted
(6) Adjust a mountpoint's topology flags: mount_set_topology(int dfd, const char *path, unsigned int topology_flags); (7) Reconfigure a mountpoint: mount_reconfigure(int dfd, const char *path, unsigned int mount_flags);What's the fundamental difference between topology flags and other flags? Why two syscalls?
Actually, if you look at the do_mount() function, these *are* separate things. If you look at the code: if (flags & MS_REMOUNT) retval = do_remount(&path, flags, sb_flags, mnt_flags, data_page); ^^^ that is mount_reconfigure() and superblock reconfiguration. else if (flags & MS_BIND) retval = do_loopback(&path, dev_name, flags & MS_REC); else if (flags & (MS_SHARED | MS_PRIVATE | MS_SLAVE | MS_UNBINDABLE)) retval = do_change_type(&path, flags); ^^^ that is mount_set_topology(). else if (flags & MS_MOVE) retval = do_move_mount(&path, dev_name); else retval = do_new_mount(&path, type_page, sb_flags, mnt_flags, dev_name, data_page); The mount() syscall is actually a function switch with five functions. David