Miklos Szeredi <mszeredi@xxxxxxxxxx> wrote: > > (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