aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/Makefile.am3
-rw-r--r--include/linux/utsname_compat.h (renamed from lib/libspl/include/sys/utsname.h)23
-rw-r--r--include/sys/zfs_context.h5
-rw-r--r--lib/libspl/include/sys/Makefile.am1
-rw-r--r--lib/libzpool/kernel.c12
-rw-r--r--module/zfs/spa_config.c5
-rw-r--r--module/zfs/spa_history.c11
7 files changed, 31 insertions, 29 deletions
diff --git a/include/linux/Makefile.am b/include/linux/Makefile.am
index c2a749121..fc2df090e 100644
--- a/include/linux/Makefile.am
+++ b/include/linux/Makefile.am
@@ -4,7 +4,8 @@ KERNEL_H = \
$(top_srcdir)/include/linux/dcache_compat.h \
$(top_srcdir)/include/linux/xattr_compat.h \
$(top_srcdir)/include/linux/vfs_compat.h \
- $(top_srcdir)/include/linux/blkdev_compat.h
+ $(top_srcdir)/include/linux/blkdev_compat.h \
+ $(top_srcdir)/include/linux/utsname_compat.h
USER_H =
diff --git a/lib/libspl/include/sys/utsname.h b/include/linux/utsname_compat.h
index e16e22dbd..88da45cf5 100644
--- a/lib/libspl/include/sys/utsname.h
+++ b/include/linux/utsname_compat.h
@@ -2,33 +2,28 @@
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
+ * 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/OPENLIBSPLARIS.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/OPENLIBSPLARIS.LICENSE.
+ * 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 2007 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-#ifndef _LIBSPL_UTSNAME_H
-#define _LIBSPL_UTSNAME_H
+#ifndef _ZFS_UTSNAME_H
+#define _ZFS_UTSNAME_H
-#include_next <sys/utsname.h>
+#include <linux/utsname.h>
-struct utsname utsname;
+typedef struct new_utsname utsname_t;
-#endif /* _LIBSPL_UTSNAME_H */
+#endif /* _ZFS_UTSNAME_H */
diff --git a/include/sys/zfs_context.h b/include/sys/zfs_context.h
index f26c827dc..ee8221d53 100644
--- a/include/sys/zfs_context.h
+++ b/include/sys/zfs_context.h
@@ -67,6 +67,7 @@
#include <sys/ctype.h>
#include <sys/disp.h>
#include <linux/dcache_compat.h>
+#include <linux/utsname_compat.h>
#else /* _KERNEL */
@@ -117,6 +118,7 @@
#include <sys/fm/fs/zfs.h>
#include <sys/sunddi.h>
#include <sys/debug.h>
+#include <sys/utsname.h>
/*
* Stack
@@ -673,6 +675,9 @@ extern int ddi_strtoul(const char *str, char **nptr, int base,
extern int ddi_strtoull(const char *str, char **nptr, int base,
u_longlong_t *result);
+typedef struct utsname utsname_t;
+extern utsname_t *utsname(void);
+
/* ZFS Boot Related stuff. */
struct _buf {
diff --git a/lib/libspl/include/sys/Makefile.am b/lib/libspl/include/sys/Makefile.am
index f55abc8fa..d86cc6a56 100644
--- a/lib/libspl/include/sys/Makefile.am
+++ b/lib/libspl/include/sys/Makefile.am
@@ -47,7 +47,6 @@ libspl_HEADERS = \
$(top_srcdir)/lib/libspl/include/sys/types.h \
$(top_srcdir)/lib/libspl/include/sys/tzfile.h \
$(top_srcdir)/lib/libspl/include/sys/uio.h \
- $(top_srcdir)/lib/libspl/include/sys/utsname.h \
$(top_srcdir)/lib/libspl/include/sys/va_list.h \
$(top_srcdir)/lib/libspl/include/sys/varargs.h \
$(top_srcdir)/lib/libspl/include/sys/vnode.h \
diff --git a/lib/libzpool/kernel.c b/lib/libzpool/kernel.c
index 5adcfa617..995f61d05 100644
--- a/lib/libzpool/kernel.c
+++ b/lib/libzpool/kernel.c
@@ -47,10 +47,7 @@ int aok;
uint64_t physmem;
vnode_t *rootdir = (vnode_t *)0xabcd1234;
char hw_serial[HW_HOSTID_LEN];
-
-struct utsname utsname = {
- "userland", "libzpool", "1", "1", "na"
-};
+struct utsname hw_utsname;
/* this only exists to have its address taken */
struct proc p0;
@@ -1089,6 +1086,12 @@ ddi_strtoull(const char *str, char **nptr, int base, u_longlong_t *result)
return (0);
}
+utsname_t *
+utsname(void)
+{
+ return (&hw_utsname);
+}
+
/*
* =========================================================================
* kernel emulation setup & teardown
@@ -1121,6 +1124,7 @@ kernel_init(int mode)
VERIFY((random_fd = open("/dev/random", O_RDONLY)) != -1);
VERIFY((urandom_fd = open("/dev/urandom", O_RDONLY)) != -1);
+ VERIFY0(uname(&hw_utsname));
thread_init();
system_taskq_init();
diff --git a/module/zfs/spa_config.c b/module/zfs/spa_config.c
index c8fe79ed5..a08456d56 100644
--- a/module/zfs/spa_config.c
+++ b/module/zfs/spa_config.c
@@ -32,7 +32,6 @@
#include <sys/fs/zfs.h>
#include <sys/vdev_impl.h>
#include <sys/zfs_ioctl.h>
-#include <sys/utsname.h>
#include <sys/systeminfo.h>
#include <sys/sunddi.h>
#include <sys/zfeature.h>
@@ -408,8 +407,8 @@ spa_config_generate(spa_t *spa, vdev_t *vd, uint64_t txg, int getstats)
VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_HOSTID,
hostid) == 0);
}
- VERIFY(nvlist_add_string(config, ZPOOL_CONFIG_HOSTNAME,
- utsname.nodename) == 0);
+ VERIFY0(nvlist_add_string(config, ZPOOL_CONFIG_HOSTNAME,
+ utsname()->nodename));
if (vd != rvd) {
VERIFY(nvlist_add_uint64(config, ZPOOL_CONFIG_TOP_GUID,
diff --git a/module/zfs/spa_history.c b/module/zfs/spa_history.c
index 5b82238b9..1c434197d 100644
--- a/module/zfs/spa_history.c
+++ b/module/zfs/spa_history.c
@@ -32,7 +32,6 @@
#include <sys/dmu_objset.h>
#include <sys/dsl_dataset.h>
#include <sys/dsl_dir.h>
-#include <sys/utsname.h>
#include <sys/cmn_err.h>
#include <sys/sunddi.h>
#include <sys/cred.h>
@@ -236,9 +235,8 @@ spa_history_log_sync(void *arg, dmu_tx_t *tx)
#endif
fnvlist_add_uint64(nvl, ZPOOL_HIST_TIME, gethrestime_sec());
-#ifdef _KERNEL
- fnvlist_add_string(nvl, ZPOOL_HIST_HOST, utsname.nodename);
-#endif
+ fnvlist_add_string(nvl, ZPOOL_HIST_HOST, utsname()->nodename);
+
if (nvlist_exists(nvl, ZPOOL_HIST_CMD)) {
zfs_dbgmsg("command: %s",
fnvlist_lookup_string(nvl, ZPOOL_HIST_CMD));
@@ -546,11 +544,12 @@ spa_history_log_internal_dd(dsl_dir_t *dd, const char *operation,
void
spa_history_log_version(spa_t *spa, const char *operation)
{
+ utsname_t *u = utsname();
+
spa_history_log_internal(spa, operation, NULL,
"pool version %llu; software version %llu/%d; uts %s %s %s %s",
(u_longlong_t)spa_version(spa), SPA_VERSION, ZPL_VERSION,
- utsname.nodename, utsname.release, utsname.version,
- utsname.machine);
+ u->nodename, u->release, u->version, u->machine);
}
#if defined(_KERNEL) && defined(HAVE_SPL)