summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-kernel/spl/files/spl-0.6.0_rc14-simplify-hostid-logic.patch')
-rw-r--r--sys-kernel/spl/files/spl-0.6.0_rc14-simplify-hostid-logic.patch181
1 files changed, 0 insertions, 181 deletions
diff --git a/sys-kernel/spl/files/spl-0.6.0_rc14-simplify-hostid-logic.patch b/sys-kernel/spl/files/spl-0.6.0_rc14-simplify-hostid-logic.patch
deleted file mode 100644
index 3d5199fb4eb6..000000000000
--- a/sys-kernel/spl/files/spl-0.6.0_rc14-simplify-hostid-logic.patch
+++ /dev/null
@@ -1,181 +0,0 @@
-From f47f028ae6f039c13d3138e2ee1c0056a3a3f789 Mon Sep 17 00:00:00 2001
-From: Richard Yao <ryao@cs.stonybrook.edu>
-Date: Mon, 11 Mar 2013 21:16:36 -0400
-Subject: [PATCH] Simplify hostid logic
-
-There is plenty of compatibility code for a hw_hostid
-that isn't used by anything. At the same time, there are apparently
-issues with the current hostid logic. coredumb in #zfsonlinux on
-freenode reported that Fedora 17 changes its hostid on every boot, which
-required force importing his pool. A suggestion by wca was to adopt
-FreeBSD's behavior, where it treats hostid as zero if /etc/hostid does
-not exist
-
-Adopting FreeBSD's behavior permits us to eliminate plenty of code,
-including a userland helper that invokes the system's hostid as a
-fallback.
-
-Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
----
- include/sys/sysmacros.h | 1 -
- include/sys/systeminfo.h | 3 +--
- module/spl/spl-generic.c | 55 ++++++------------------------------------------
- module/spl/spl-proc.c | 11 ----------
- 4 files changed, 7 insertions(+), 63 deletions(-)
-
-diff --git a/include/sys/sysmacros.h b/include/sys/sysmacros.h
-index 7c4da67..4dd2685 100644
---- a/include/sys/sysmacros.h
-+++ b/include/sys/sysmacros.h
-@@ -138,7 +138,6 @@
- /* Missing globals */
- extern char spl_version[32];
- extern unsigned long spl_hostid;
--extern char hw_serial[11];
-
- /* Missing misc functions */
- extern int highbit(unsigned long i);
-diff --git a/include/sys/systeminfo.h b/include/sys/systeminfo.h
-index e22a085..a4c1984 100644
---- a/include/sys/systeminfo.h
-+++ b/include/sys/systeminfo.h
-@@ -25,6 +25,5 @@
- #ifndef _SPL_SYSTEMINFO_H
- #define _SPL_SYSTEMINFO_H
-
--#define HW_INVALID_HOSTID 0xFFFFFFFF /* an invalid hostid */
- #define HW_HOSTID_LEN 11 /* minimum buffer size needed */
- /* to hold a decimal or hex */
-diff --git a/module/spl/spl-generic.c b/module/spl/spl-generic.c
-index 3cef489..b8e2ed1 100644
---- a/module/spl/spl-generic.c
-+++ b/module/spl/spl-generic.c
-@@ -52,14 +52,11 @@
- char spl_version[32] = "SPL v" SPL_META_VERSION "-" SPL_META_RELEASE;
- EXPORT_SYMBOL(spl_version);
-
--unsigned long spl_hostid = HW_INVALID_HOSTID;
-+unsigned long spl_hostid = 0;
- EXPORT_SYMBOL(spl_hostid);
- module_param(spl_hostid, ulong, 0644);
- MODULE_PARM_DESC(spl_hostid, "The system hostid.");
-
--char hw_serial[HW_HOSTID_LEN] = "<none>";
--EXPORT_SYMBOL(hw_serial);
--
- proc_t p0 = { 0 };
- EXPORT_SYMBOL(p0);
-
-@@ -467,7 +464,7 @@ struct new_utsname *__utsname(void)
- int result;
- uint64_t size;
- struct _buf *file;
-- unsigned long hostid = 0;
-+ uint32_t hostid = 0;
-
- file = kobj_open_file(spl_hostid_path);
-
-@@ -511,45 +508,10 @@ struct new_utsname *__utsname(void)
- return 0;
- }
-
--#define GET_HOSTID_CMD \
-- "exec 0</dev/null " \
-- " 1>/proc/sys/kernel/spl/hostid " \
-- " 2>/dev/null; " \
-- "hostid"
--
--static int
--hostid_exec(void)
--{
-- char *argv[] = { "/bin/sh",
-- "-c",
-- GET_HOSTID_CMD,
-- NULL };
-- char *envp[] = { "HOME=/",
-- "TERM=linux",
-- "PATH=/sbin:/usr/sbin:/bin:/usr/bin",
-- NULL };
-- int rc;
--
-- /* Doing address resolution in the kernel is tricky and just
-- * not a good idea in general. So to set the proper 'hw_serial'
-- * use the usermodehelper support to ask '/bin/sh' to run
-- * '/usr/bin/hostid' and redirect the result to /proc/sys/spl/hostid
-- * for us to use. It's a horrific solution but it will do for now.
-- */
-- rc = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC);
-- if (rc)
-- printk("SPL: Failed user helper '%s %s %s', rc = %d\n",
-- argv[0], argv[1], argv[2], rc);
--
-- return rc;
--}
--
- uint32_t
- zone_get_hostid(void *zone)
- {
- static int first = 1;
-- unsigned long hostid;
-- int rc;
-
- /* Only the global zone is supported */
- ASSERT(zone == NULL);
-@@ -559,21 +521,16 @@ struct new_utsname *__utsname(void)
-
- /*
- * Get the hostid if it was not passed as a module parameter.
-- * Try reading the /etc/hostid file directly, and then fall
-- * back to calling the /usr/bin/hostid utility.
-+ * Try reading the /etc/hostid file directly.
- */
-- if ((spl_hostid == HW_INVALID_HOSTID) &&
-- (rc = hostid_read()) && (rc = hostid_exec()))
-- return HW_INVALID_HOSTID;
-+ if (hostid_read())
-+ spl_hostid = 0;
-
- printk(KERN_NOTICE "SPL: using hostid 0x%08x\n",
- (unsigned int) spl_hostid);
- }
-
-- if (ddi_strtoul(hw_serial, NULL, HW_HOSTID_LEN-1, &hostid) != 0)
-- return HW_INVALID_HOSTID;
--
-- return (uint32_t)hostid;
-+ return spl_hostid;
- }
- EXPORT_SYMBOL(zone_get_hostid);
-
-diff --git a/module/spl/spl-proc.c b/module/spl/spl-proc.c
-index cd4fa1b..1113cf2 100644
---- a/module/spl/spl-proc.c
-+++ b/module/spl/spl-proc.c
-@@ -506,9 +506,6 @@ enum {
- if (str == end)
- SRETURN(-EINVAL);
-
-- (void) snprintf(hw_serial, HW_HOSTID_LEN, "%lu", spl_hostid);
-- hw_serial[HW_HOSTID_LEN - 1] = '\0';
-- *ppos += *lenp;
- } else {
- len = snprintf(str, sizeof(str), "%lx", spl_hostid);
- if (*ppos >= len)
-@@ -1051,14 +1048,6 @@ enum {
- .mode = 0644,
- .proc_handler = &proc_dohostid,
- },
-- {
-- CTL_NAME (CTL_HW_SERIAL)
-- .procname = "hw_serial",
-- .data = hw_serial,
-- .maxlen = sizeof(hw_serial),
-- .mode = 0444,
-- .proc_handler = &proc_dostring,
-- },
- #ifndef HAVE_KALLSYMS_LOOKUP_NAME
- {
- CTL_NAME (CTL_KALLSYMS)
---
-1.8.1.5
-