Hi Al, Miklós, Can we consider replacing the "insert cursor" approach we're currently using for proc files to scan the current namespace's mount list[1] with something that uses an xarray of mounts indexed by mnt_id? This has some advantages: (1) It's simpler. We don't need to insert dummy mount objects as bookmarks into the mount list and code that's walking the list doesn't have to carefully step over them. (2) We can use the file position to represent the mnt_id and can jump to it directly - ie. using seek() to jump to a mount object by its ID. (3) It might make it easier to use RCU in future to dump mount entries rather than having to take namespace_sem. xarray provides for the possibility of tagging entries to say that they're viewable to avoid dumping incomplete mount objects. But there are a number of disadvantages: (1) We have to allocate memory to maintain the xarray, which becomes more of a problem as mnt_id values get scattered. (2) We need to preallocate the xarray memory because we're manipulating (3) The effect could be magnified because someone mounts an entire subtree and propagation has to copy all of it. David Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9f6c61f96f2d97cbb5f7fa85607bc398f843ff0f [1] --- David Howells (3): vfs: Use an xarray in the mount namespace to handle /proc/mounts list vfs: Use the mounts_to_id array to do /proc/mounts and co. vfs: Remove mount list trawling cursor stuff fs/mount.h | 2 +- fs/namespace.c | 66 ++++++++++--------------------------------- fs/proc_namespace.c | 3 -- include/linux/mount.h | 4 +-- 4 files changed, 17 insertions(+), 58 deletions(-)