diff options
| author | Josef Bacik <josef@toxicpanda.com> | 2024-07-09 14:31:23 -0400 |
|---|---|---|
| committer | Alejandro Colomar <alx@kernel.org> | 2024-07-22 22:31:01 +0200 |
| commit | ce7d758cc5f47fe612ede20bb1e2123a4312cfec (patch) | |
| tree | 17a229fe1c041ce4f8ce65397ede4d0f36799d23 | |
| parent | a73b4da313cbf30fde2a2dcc154a704b6fab517c (diff) | |
| download | man-pages-ce7d758cc5f47fe612ede20bb1e2123a4312cfec.tar.gz | |
listmount.2: Add page
Cc: Christian Brauner <brauner@kernel.org>
Cc: Miklos Szeredi <mszeredi@redhat.com>
Cc: <linux-fsdevel@vger.kernel.org>
Cc: <kernel-team@fb.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Message-ID: <2d72a44fa49f47bd7258d7efb931926b26de4004.1720549824.git.josef@toxicpanda.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
| -rw-r--r-- | man/man2/listmount.2 | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/man/man2/listmount.2 b/man/man2/listmount.2 new file mode 100644 index 0000000000..b72199f83a --- /dev/null +++ b/man/man2/listmount.2 @@ -0,0 +1,116 @@ +.\" Copyright (c) 2024 Josef Bacik <josef@toxicpanda.com> +.\" +.\" SPDX-License-Identifier: Linux-man-pages-copyleft +.\" +.TH listmount 2 (date) "Linux man-pages (unreleased)" +.SH NAME +listmount +\- +get a list of mount ID's +.SH LIBRARY +Standard C library +.RI ( libc ", " \-lc ) +.SH SYNOPSIS +.nf +.BR "#include <linux/mount.h>" " /* Definition of struct mnt_id_req constants */" +.B #include <unistd.h> +.P +.BI "int syscall(SYS_listmount, struct mnt_id_req *" req , +.BI " uint64_t *" mnt_ids ", size_t " nr_mnt_ids , +.BI " unsigned long " flags ); +.P +.B #include <linux/mount.h> +.P +.B struct mnt_id_req { +.BR " __u32 size;" " /* sizeof(struct mnt_id_req) */" +.BR " __u64 mnt_id;" " /* The parent mnt_id being searched */" +.BR " __u64 param;" " /* The next mnt_id we want to find */" +.B }; +.fi +.P +.IR Note : +glibc provides no wrapper for +.BR listmount (), +necessitating the use of +.BR syscall (2). +.SH DESCRIPTION +To access the mounts in your namespace, +you must have CAP_SYS_ADMIN in the user namespace. +.P +This function returns a list of mount IDs under the +.BR req.mnt_id . +This is meant to be used in conjuction with +.BR statmount (2) +in order to provide a way to iterate and discover mounted file systems. +.SS The mnt_id_req structure +.I req.size +is used by the kernel to determine which struct +.I mnt_id_req +is being passed in, +it should always be set to +.IR \%sizeof(struct\~mnt_id_req) . +.P +.I req.mnt_id +is the parent mnt_id that we will list from, +which can either be +.B LSMT_ROOT +which means the root mount of the current mount namespace, +or a mount ID obtained from either +.BR statx (2) +using +.B STATX_MNT_ID_UNIQUE +or from +.BR listmount (2) . +.P +.I req.param +is used to tell the kernel what mount ID to start the list from. +This is useful if multiple calls to +.BR listmount (2) +are required. +This can be set to the last mount ID returned + 1 in order to +resume from a previous spot in the list. +.SH RETURN VALUE +On success, the number of entries filled into +.I mnt_ids +is returned; +0 if there are no more mounts left. +On error, \-1 is returned, and +.I errno +is set to indicate the error. +.SH ERRORS +.TP +.B EPERM +Permission is denied for accessing this mount. +.TP +.B EFAULT +.I req +or +.I mnt_ids +points to a location outside the process's accessible +address space. +.TP +.B EINVAL +Invalid flag specified in +.IR flags . +.TP +.B EINVAL +.I req +is of insufficient size to be utilized. +.TP +.B E2BIG +.I req +is too large, +the limit is the architectures page size. +.TP +.B ENOENT +The specified +.I req.mnt_id +doesn't exist. +.TP +.B ENOMEM +Out of memory (i.e., kernel memory). +.SH STANDARDS +Linux. +.SH SEE ALSO +.BR statmount (2), +.BR statx (2) |
