Thread (13 messages) flat view 13 messages, 4 authors, 2018-01-19

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help