• Christian Brauner's avatar
    nsfs: iterate through mount namespaces · a1d220d9
    Christian Brauner authored
    It is already possible to list mounts in other mount namespaces and to
    retrieve namespace file descriptors without having to go through procfs
    by deriving them from pidfds.
    
    Augment these abilities by adding the ability to retrieve information
    about a mount namespace via NS_MNT_GET_INFO. This will return the mount
    namespace id and the number of mounts currently in the mount namespace.
    The number of mounts can be used to size the buffer that needs to be
    used for listmount() and is in general useful without having to actually
    iterate through all the mounts. The structure is extensible.
    
    And add the ability to iterate through all mount namespaces over which
    the caller holds privilege returning the file descriptor for the next or
    previous mount namespace.
    
    To retrieve a mount namespace the caller must be privileged wrt to it's
    owning user namespace. This means that PID 1 on the host can list all
    mounts in all mount namespaces or that a container can list all mounts
    of its nested containers.
    
    Optionally pass a structure for NS_MNT_GET_INFO with
    NS_MNT_GET_{PREV,NEXT} to retrieve information about the mount namespace
    in one go. Both ioctls can be implemented for other namespace types
    easily.
    
    Together with recent api additions this means one can iterate through
    all mounts in all mount namespaces without ever touching procfs.
    
    Link: https://lore.kernel.org/r/20240719-work-mount-namespace-v1-5-834113cab0d2@kernel.orgReviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
    Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
    Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
    a1d220d9
nsfs.c 9.69 KB