diff options
author | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2008-11-17 20:49:29 +0000 |
---|---|---|
committer | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2008-11-17 20:49:29 +0000 |
commit | 1ba4a712dde6e6c613fc411a96958b4ade67de4c (patch) | |
tree | 81b89fa4ac6467771d5aa291a97f4665981a6108 /cddl/compat | |
parent | 8fc061164d74a4c9775f39da3c0b5d02112866c8 (diff) | |
download | src-1ba4a712dde6e6c613fc411a96958b4ade67de4c.tar.gz src-1ba4a712dde6e6c613fc411a96958b4ade67de4c.zip |
Update ZFS from version 6 to 13 and bring some FreeBSD-specific changes.
This bring huge amount of changes, I'll enumerate only user-visible changes:
- Delegated Administration
Allows regular users to perform ZFS operations, like file system
creation, snapshot creation, etc.
- L2ARC
Level 2 cache for ZFS - allows to use additional disks for cache.
Huge performance improvements mostly for random read of mostly
static content.
- slog
Allow to use additional disks for ZFS Intent Log to speed up
operations like fsync(2).
- vfs.zfs.super_owner
Allows regular users to perform privileged operations on files stored
on ZFS file systems owned by him. Very careful with this one.
- chflags(2)
Not all the flags are supported. This still needs work.
- ZFSBoot
Support to boot off of ZFS pool. Not finished, AFAIK.
Submitted by: dfr
- Snapshot properties
- New failure modes
Before if write requested failed, system paniced. Now one
can select from one of three failure modes:
- panic - panic on write error
- wait - wait for disk to reappear
- continue - serve read requests if possible, block write requests
- Refquota, refreservation properties
Just quota and reservation properties, but don't count space consumed
by children file systems, clones and snapshots.
- Sparse volumes
ZVOLs that don't reserve space in the pool.
- External attributes
Compatible with extattr(2).
- NFSv4-ACLs
Not sure about the status, might not be complete yet.
Submitted by: trasz
- Creation-time properties
- Regression tests for zpool(8) command.
Obtained from: OpenSolaris
Notes
Notes:
svn path=/head/; revision=185029
Diffstat (limited to 'cddl/compat')
-rw-r--r-- | cddl/compat/opensolaris/include/libshare.h | 36 | ||||
-rw-r--r-- | cddl/compat/opensolaris/include/mnttab.h | 2 | ||||
-rw-r--r-- | cddl/compat/opensolaris/misc/mnttab.c | 2 | ||||
-rw-r--r-- | cddl/compat/opensolaris/misc/zmount.c | 5 | ||||
-rw-r--r-- | cddl/compat/opensolaris/misc/zone.c | 4 |
5 files changed, 45 insertions, 4 deletions
diff --git a/cddl/compat/opensolaris/include/libshare.h b/cddl/compat/opensolaris/include/libshare.h new file mode 100644 index 000000000000..82aacadd93a9 --- /dev/null +++ b/cddl/compat/opensolaris/include/libshare.h @@ -0,0 +1,36 @@ +/*- + * Copyright (c) 2007 Pawel Jakub Dawidek <pjd@FreeBSD.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _OPENSOLARIS_LIBSHARE_H_ +#define _OPENSOLARIS_LIBSHARE_H_ + +#define SA_OK 0 + +#define SA_INIT_CONTROL_API 0 + +#endif /* !_OPENSOLARIS_LIBSHARE_H_ */ diff --git a/cddl/compat/opensolaris/include/mnttab.h b/cddl/compat/opensolaris/include/mnttab.h index 9d0bfc72b9a3..abd2f9dcc70c 100644 --- a/cddl/compat/opensolaris/include/mnttab.h +++ b/cddl/compat/opensolaris/include/mnttab.h @@ -9,6 +9,8 @@ #define MNTTAB _PATH_DEVNULL #define MNT_LINE_MAX 1024 +#define umount2(p, f) unmount(p, f) + struct mnttab { char *mnt_special; char *mnt_mountp; diff --git a/cddl/compat/opensolaris/misc/mnttab.c b/cddl/compat/opensolaris/misc/mnttab.c index c1971caf3641..8c1c2d6dba8c 100644 --- a/cddl/compat/opensolaris/misc/mnttab.c +++ b/cddl/compat/opensolaris/misc/mnttab.c @@ -37,6 +37,8 @@ __FBSDID("$FreeBSD$"); #include <sys/mntent.h> #include <sys/mnttab.h> #include <stdio.h> +#include <stdlib.h> +#include <string.h> static char * mntopt(char **p) diff --git a/cddl/compat/opensolaris/misc/zmount.c b/cddl/compat/opensolaris/misc/zmount.c index d80a3b3be478..493a4fc4ef12 100644 --- a/cddl/compat/opensolaris/misc/zmount.c +++ b/cddl/compat/opensolaris/misc/zmount.c @@ -35,9 +35,10 @@ __FBSDID("$FreeBSD$"); #include <sys/mount.h> #include <sys/uio.h> #include <sys/mntent.h> +#include <assert.h> #include <stdio.h> #include <stdlib.h> -#include <assert.h> +#include <string.h> static void build_iovec(struct iovec **iov, int *iovlen, const char *name, void *val, @@ -86,7 +87,7 @@ zmount(const char *spec, const char *dir, int mflag, char *fstype, assert(optlen > 0); optstr = strdup(optptr); - assert(optptr != NULL); + assert(optstr != NULL); iov = NULL; iovlen = 0; diff --git a/cddl/compat/opensolaris/misc/zone.c b/cddl/compat/opensolaris/misc/zone.c index 1ce77cf5926e..9d48e6d970c1 100644 --- a/cddl/compat/opensolaris/misc/zone.c +++ b/cddl/compat/opensolaris/misc/zone.c @@ -32,7 +32,7 @@ #include <sys/sysctl.h> #include <sys/zone.h> -int +zoneid_t getzoneid(void) { size_t size; @@ -42,5 +42,5 @@ getzoneid(void) size = sizeof(jailid); if (sysctlbyname("security.jail.jailed", &jailid, &size, NULL, 0) == -1) assert(!"No security.jail.jailed sysctl!"); - return (jailid); + return ((zoneid_t)jailid); } |