Skip to content

Commit

Permalink
Finally... Import the latest open-source ZFS version - (SPA) 28.
Browse files Browse the repository at this point in the history
Few new things available from now on:

- Data deduplication.
- Triple parity RAIDZ (RAIDZ3).
- zfs diff.
- zpool split.
- Snapshot holds.
- zpool import -F. Allows to rewind corrupted pool to earlier
  transaction group.
- Possibility to import pool in read-only mode.

MFC after:	1 month
  • Loading branch information
pjd authored and pjd committed Feb 27, 2011
1 parent 4a52ed9 commit cc52e2a
Show file tree
Hide file tree
Showing 304 changed files with 59,980 additions and 20,396 deletions.
3 changes: 2 additions & 1 deletion cddl/compat/opensolaris/include/fcntl.h
Expand Up @@ -32,6 +32,7 @@

#include_next <fcntl.h>

#define open64 open
#define open64(...) open(__VA_ARGS__)
#define openat64(...) openat(__VA_ARGS__)

#endif
4 changes: 4 additions & 0 deletions cddl/compat/opensolaris/include/mnttab.h
Expand Up @@ -12,6 +12,10 @@
#define MNTTAB _PATH_DEVZERO
#define MNT_LINE_MAX 1024

#define MS_OVERLAY 0x0
#define MS_NOMNTTAB 0x0
#define MS_RDONLY 0x1

#define umount2(p, f) unmount(p, f)

struct mnttab {
Expand Down
2 changes: 1 addition & 1 deletion cddl/compat/opensolaris/include/priv.h
Expand Up @@ -10,7 +10,7 @@
#define PRIV_SYS_CONFIG 0

static __inline int
priv_ineffect(priv)
priv_ineffect(int priv)
{

assert(priv == PRIV_SYS_CONFIG);
Expand Down
38 changes: 38 additions & 0 deletions cddl/compat/opensolaris/include/sha2.h
@@ -0,0 +1,38 @@
/*-
* Copyright (c) 2010 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_SHA2_H_
#define _OPENSOLARIS_SHA2_H_

#include_next <sha256.h>

#define SHA256Init(c) SHA256_Init(c)
#define SHA256Update(c, d, s) SHA256_Update((c), (d), (s))
#define SHA256Final(b, c) SHA256_Final((unsigned char *)(b), (c))

#endif /* !_OPENSOLARIS_SHA2_H_ */
6 changes: 5 additions & 1 deletion cddl/compat/opensolaris/include/solaris.h
Expand Up @@ -5,6 +5,10 @@

#include <sys/ccompile.h>

#define dirent64 dirent
#include <fcntl.h>

#define NOTE(s)

int mkdirp(const char *, mode_t);

#endif /* !_SOLARIS_H_ */
39 changes: 39 additions & 0 deletions cddl/compat/opensolaris/include/thread_pool.h
@@ -0,0 +1,39 @@
/*-
* Copyright (c) 2010 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_THREAD_POOL_H_
#define _OPENSOLARIS_THREAD_POOL_H_

typedef int tpool_t;

#define tpool_create(a, b, c, d) (0)
#define tpool_dispatch(pool, func, arg) func(arg)
#define tpool_wait(pool) do { } while (0)
#define tpool_destroy(pool) do { } while (0)

#endif /* !_OPENSOLARIS_THREAD_POOL_H_ */
14 changes: 8 additions & 6 deletions cddl/compat/opensolaris/misc/fsshare.c
Expand Up @@ -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
Expand Down
5 changes: 4 additions & 1 deletion cddl/compat/opensolaris/misc/zmount.c
Expand Up @@ -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,
Expand Down Expand Up @@ -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);
Expand All @@ -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);
Expand Down
50 changes: 50 additions & 0 deletions cddl/contrib/opensolaris/cmd/stat/common/statcommon.h
@@ -0,0 +1,50 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
*
* Common routines for acquiring snapshots of kstats for
* iostat, mpstat, and vmstat.
*/

#ifndef _STATCOMMON_H
#define _STATCOMMON_H

#ifdef __cplusplus
extern "C" {
#endif

#include <stdio.h>
#include <sys/types.h>
#include <time.h>

#define NODATE 0 /* Default: No time stamp */
#define DDATE 1 /* Standard date format */
#define UDATE 2 /* Internal representation of Unix time */

/* Print a timestamp in either Unix or standard format. */
void print_timestamp(uint_t);

#ifdef __cplusplus
}
#endif

#endif /* _STATCOMMON_H */
49 changes: 49 additions & 0 deletions cddl/contrib/opensolaris/cmd/stat/common/timestamp.c
@@ -0,0 +1,49 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/

#include "statcommon.h"

#include <langinfo.h>

/*
* Print timestamp as decimal reprentation of time_t value (-T u was specified)
* or in date(1) format (-T d was specified).
*/
void
print_timestamp(uint_t timestamp_fmt)
{
time_t t = time(NULL);

if (timestamp_fmt == UDATE) {
(void) printf("%ld\n", t);
} else if (timestamp_fmt == DDATE) {
char dstr[64];
int len;

len = strftime(dstr, sizeof (dstr), "%+", localtime(&t));
if (len > 0)
(void) printf("%s\n", dstr);
}
}

0 comments on commit cc52e2a

Please sign in to comment.