diff options
Diffstat (limited to 'cddl/compat/opensolaris/misc')
-rw-r--r-- | cddl/compat/opensolaris/misc/fsshare.c | 14 | ||||
-rw-r--r-- | cddl/compat/opensolaris/misc/zmount.c | 5 |
2 files changed, 12 insertions, 7 deletions
diff --git a/cddl/compat/opensolaris/misc/fsshare.c b/cddl/compat/opensolaris/misc/fsshare.c index 10ed591d5bca..e8faa928d6fb 100644 --- a/cddl/compat/opensolaris/misc/fsshare.c +++ b/cddl/compat/opensolaris/misc/fsshare.c @@ -28,15 +28,17 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> -#include <stdio.h> -#include <unistd.h> -#include <fcntl.h> -#include <string.h> + +#include <assert.h> #include <errno.h> +#include <fcntl.h> +#include <fsshare.h> #include <libutil.h> -#include <assert.h> #include <pathnames.h> /* _PATH_MOUNTDPID */ -#include <fsshare.h> +#include <signal.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> #define FILE_HEADER "# !!! DO NOT EDIT THIS FILE MANUALLY !!!\n\n" #define OPTSSIZE 1024 diff --git a/cddl/compat/opensolaris/misc/zmount.c b/cddl/compat/opensolaris/misc/zmount.c index 493a4fc4ef12..b4f99e3be9fd 100644 --- a/cddl/compat/opensolaris/misc/zmount.c +++ b/cddl/compat/opensolaris/misc/zmount.c @@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$"); #include <stdio.h> #include <stdlib.h> #include <string.h> +#include <mnttab.h> static void build_iovec(struct iovec **iov, int *iovlen, const char *name, void *val, @@ -78,7 +79,7 @@ zmount(const char *spec, const char *dir, int mflag, char *fstype, assert(spec != NULL); assert(dir != NULL); - assert(mflag == 0); + assert(mflag == 0 || mflag == MS_RDONLY); assert(fstype != NULL); assert(strcmp(fstype, MNTTYPE_ZFS) == 0); assert(dataptr == NULL); @@ -91,6 +92,8 @@ zmount(const char *spec, const char *dir, int mflag, char *fstype, iov = NULL; iovlen = 0; + if (mflag & MS_RDONLY) + build_iovec(&iov, &iovlen, "ro", NULL, 0); build_iovec(&iov, &iovlen, "fstype", fstype, (size_t)-1); build_iovec(&iov, &iovlen, "fspath", __DECONST(char *, dir), (size_t)-1); |