diff options
-rw-r--r-- | include/linux/Makefile.am | 3 | ||||
-rw-r--r-- | include/linux/utsname_compat.h (renamed from lib/libspl/include/sys/utsname.h) | 23 | ||||
-rw-r--r-- | include/sys/zfs_context.h | 5 | ||||
-rw-r--r-- | lib/libspl/include/sys/Makefile.am | 1 | ||||
-rw-r--r-- | lib/libzpool/kernel.c | 12 | ||||
-rw-r--r-- | module/zfs/spa_config.c | 5 | ||||
-rw-r--r-- | module/zfs/spa_history.c | 11 |
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) |