table of contents
| VFS_GETOPT(9) | Kernel Developer's Manual | VFS_GETOPT(9) |
NAME¶
vfs_getopt, vfs_getopts,
vfs_flagopt, vfs_scanopt,
vfs_copyopt, vfs_filteropt,
vfs_setopt, vfs_setopt_part,
vfs_setopts —
SYNOPSIS¶
#include <sys/param.h>
#include <sys/mount.h>
int
vfs_getopt(struct vfsoptlist
*opts, const char *name, void
**buf, int *len);
char *
vfs_getops(struct
vfsoptlist *opts, const
char *name, int
*error);
int
vfs_flagopt(struct vfsoptlist
*opts, const char *name,
uint64_t *flags, uint64_t
flag);
int
vfs_scanopt(struct vfsoptlist
*opts, const char *name, const
char *fmt, ...);
int
vfs_copyopt(struct vfsoptlist
*opts, const char *name, void
*dest, int len);
int
vfs_filteropt(struct vfsoptlist
*opts, const char **legal);
int
vfs_setopt(struct vfsoptlist
*opts, const char *name, void
*value, int len);
int
vfs_setopt_part(struct vfsoptlist
*opts, const char *name, void
*value, int len);
int
vfs_setopts(struct vfsoptlist
*opts, const char *name, const
char *value);
DESCRIPTION¶
Thevfs_getopt() function sets buf
to point to the value of the named mount option, and sets
len to the length of the value if it is not
NULL. The buf argument will
point to the actual value, and does not need to be freed or released (and
probably should not be modified).
The vfs_getopts() function returns the
value of the specified option if it is a string (i.e.,
NUL terminated).
The vfs_flagopt() function determines if
an option exists. If the option does exist, and flags
is not NULL, flag is added to
those already set in flags. If the option does not
exist, and flags is not NULL,
flag is removed from those already set in
flags. An example of typical usage is:
if (vfs_flagopt(mp->mnt_optnew, "wormlike", NULL, 0)) vfs_flagopt(mp->mnt_optnew, "appendok", &(mp->flags), F_APPENDOK);
The vfs_scanopt() function performs a
vsscanf(3) with the option's value, using the given
format, into the specified variable arguments. The value must be a string
(i.e., NUL terminated).
The vfs_copyopt() function creates a copy
of the option's value. The len argument must match the
length of the option's value exactly (i.e., a larger buffer will still cause
vfs_copyout() to fail with
EINVAL).
The vfs_filteropt() function ensures that
no unknown options were specified. A option is valid if its name matches one
of the names in the list of legal names. An option may be prefixed with
'no', and still be considered valid.
The vfs_setopt() and
vfs_setopt_part() functions copy new data into the
option's value. In vfs_setopt(), the
len argument must match the length of the option's
value exactly (i.e., a larger buffer will still cause
vfs_copyout() to fail with
EINVAL).
The vfs_setopts() function copies a new
string into the option's value. The string, including
NUL byte, must be no longer than the option's
length.
RETURN VALUES¶
Thevfs_getopt() function returns 0 if the option was
found; otherwise, ENOENT is returned.
The vfs_getops() function returns the
specified option if it is found, and is NUL
terminated. If the option was found, but is not NUL
terminated, error is set to
EINVAL and NULL is returned.
If the option was not found, error is set to 0, and
NULL is returned.
The vfs_flagopt() function returns 1 if
the option was found, and 0 if it was not.
The vfs_scanopt() function returns 0 if
the option was not found, or was not NUL terminated;
otherwise, the return value of vsscanf(3) is returned. If
vsscanf(3) returns 0, it will be returned unchanged;
therefore, a return value of 0 does not always mean the option does not
exist, or is not a valid string.
The vfs_copyopt() and
vfs_setopt() functions return 0 if the copy was
successful, EINVAL if the option was found but the
lengths did not match, and ENOENT if the option was
not found.
The vfs_filteropt() function returns 0 if
all of the options are legal; otherwise, EINVAL is
returned.
The vfs_setopts() function returns 0 if
the copy was successful, EINVAL if the option was
found but the string was too long, and ENOENT if the
option was not found.
AUTHORS¶
This manual page was written by Chad David <davidc@FreeBSD.org> and Ruslan Ermilov <ru@FreeBSD.org>.| July 31, 2011 | Linux 4.9.0-9-amd64 |